自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 算法刷题_两个数组的交集(去重)

选择一个合适的数据结构很重要分析:关于set,C++给提供了如下三种可用的数据结构:①std::setstd::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表,使用unordered_set读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。通过哈希表记录第一个数组的唯一元素,遍历第二个数组查找交集,并通过标记避免重复插入结果,从而高效实现两个数组的去重交集。

2025-01-10 21:53:46 396

原创 算法刷题_哈希表

一般哈希表都是用来快速判断一个元素是否出现集合里。当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。

2025-01-09 14:47:25 278

原创 算法刷题Day11_回文链表

确定数组列表是否回文很简单,我们可以使用双指针法来比较两端的元素,并向中间移动。一个指针从起点向中间移动,另一个指针从终点向中间移动。public:// 比较数组回文i < j;if (vec[i]!通过快慢指针找到链表的中点位置,然后反转链表的后半部分,再逐一比较前半部分和反转后的后半部分节点值,从而判断链表是否为回文。关键点在于正确实现快慢指针逻辑以及后半部分链表的反转,确保算法在时间复杂度 O(n) 和空间复杂度 O(1) 下高效完成回文判断。

2025-01-08 18:04:30 422

原创 算法刷题_环形链表

时间复杂度O(n):最多遍历链表两次:一次用于检测环,一次用于寻找环起点。空间复杂度O(1):只用了几个额外指针变量。

2025-01-07 21:31:23 531

原创 算法刷题_链表篇

简单来说,就是求两个链表交点节点的指针。推荐使用双指针法:它更简洁、高效,不需要显式计算链表长度。在需要快速实现时,双指针法是更好的选择。学习或演示可以用长度对齐法:长度对齐法的逻辑更直观,更容易理解。适合用于学习链表操作或展示思路。

2024-12-25 15:27:18 497

原创 算法刷题_删除链表的倒数第N个结点

双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。间距的值:n+1目的: 确保 slow 指向待删除节点的前一个节点,从而方便删除操作。如何实现: 通过让 fast 在初始化阶段多走一步,建立 n+1 的间距,然后 fast 和 slow 再同时移动直到 fast 到达链表末尾。

2024-12-23 20:53:50 615

原创 算法刷题Day7_翻转链表

提示:以下是本篇文章正文内容,下面案例可供参考问题2中两种方法的区别:递归方法代码更简洁,但可能会因为递归层数过多导致栈溢出。迭代方法更加高效,适合处理较长的链表。递归处理的顺序很重要,需要先处理后续部分的链表,再交换当前节点。改动顺序会破坏链表结构,因为链表是单向的,提前改变指针指向会丢失对剩余链表的引用。递归的本质是依赖返回值,因此先递归处理后续链表,再在递归返回的结果基础上完成当前节点的交换。

2024-12-20 22:30:03 483

原创 算法刷题_设计链表

设计链表:1.获取链表第index个节点的数值2.在链表的最前面插入一个节点3.在链表的最后面插入一个节点4.在链表第index个节点前面插入一个节点5.删除链表的第index个节点终止条件:current->next=nullptr// 创建新节点// 从虚拟头节点开始遍历=nullptr){// 遍历到链表的最后一个节点// 将最后一个节点的 next 指向新节点size++;

2024-12-19 23:15:24 860

原创 女娲补天Day5_链表_移除链表元素

数组在内存中是连续分布的,但是链表在内存中不是连续分布的。int val;//节点上的元素//指向下一节点的指针ListNode(int x):val(x),next(NULL){}//节点的构造函数//使用自己定义的构造函数初始化节点;注:如果使用默认的构造函数,初始化的时候不能直接赋值!例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2024-12-17 15:22:06 230

原创 算法刷题_数组篇_区间和

求区间和的本质就是求前缀和提示:以下是本篇文章正文内容,下面案例可供参考。

2024-12-16 23:23:57 280

原创 算法刷题_数组篇

关键点:遍历时边界上的点,使用一个规则去处理每一条边,建议使用左闭右开。在写螺旋矩阵类似的题目时,需要清楚遍历顺序,首先定义好四个顶点的值,while两个条件top<=bottom&&left<=right都需要满足,以顺时针为例,在顶层和右侧遍历后的底层和左侧需要判断时的if的条件容易写反。底层遍历(从右到左):需要检查 top <= bottom。左侧遍历(从下到上):需要检查 left <= right。口诀:遍历哪个方向,先想清楚谁的边界会动。

2024-12-15 19:36:35 944

原创 算法刷题_数组篇

题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。滑动窗口方法适用于以下问题:①找到满足条件的最短或最长****子数组。②查找数组或字符串中的特定连续子集(如最长无重复子串)。③动态调整区间,优化问题的时间复杂度。

2024-12-14 22:30:26 1176

原创 算法刷题_数组篇

for(i=0;i<s.size();i++){if(s[i]=object){//假设要移除元素为objectfor(j=i+1;j<s.size();j++){i--;size--;双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组、链表、字符串等操作的面试题,都使用双指针法。上述移除元素中时间复杂度为O(n^2),双指针方法的复杂度为O(n)。

2024-12-13 23:31:26 490

MathorCup数学应用挑战赛历年优秀论文.rar

MathorCup数学应用挑战赛历年优秀论文.rar

2024-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除