自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DAY13| 110.平衡二叉树 (优先掌握递归)、257. 二叉树的所有路径​、404. 左叶子之和、222.完全二叉树的节点个数

思路:先用后序遍历(递归法)找树的高度,如果有不平衡的子树直接返回-1,然后确定root是否是平衡二叉树;注意点:用to_string()转换int到string形式;思路:要找左叶子,可以通过父节点的左孩子是否是叶子节点来找;代码特点:后序遍历;思路1:最简单的就是后序遍历。思路2:利用完全二叉树的特点。代码特点:递归写法+回溯。思路:用前序遍历树,简化版本(隐式回溯)

2026-03-04 20:26:30 41

原创 DAY11|150. 逆波兰表达式求值、239. 滑动窗口最大值、​347. 前 K 个高频元素​

思路:用map记录每个元素的频次,再用大小为K的小顶堆按频次做优先级输入和弹出,这样小顶堆里就只会保留前K频次的元素。思路:建立单调队列,对于每个要入队的元素,将队尾所有比它小的出队,对于要出队的元素,只有正好是队头元素才需要操作;思路:计算后缀表达式,遇到数字就入栈,遇到操作符就弹出栈顶两个元素再计算后再入栈。代码特点:构造含有以上入队和出队特点的单调队列类,主函数里直接调用即可;得到的是 ASCII 值,应该写stoi()或者stoll();该题代码留白,有时间补充。

2026-02-27 16:25:12 285

原创 DAY 10|232.用栈实现队列、225. 用队列实现栈、​20. 有效的括号​、​1047. 删除字符串中的所有相邻重复项​

思路:用两个栈实现,一个栈为入队栈,第二个栈出队栈,每次需要出队时先从出队栈取,如果为空需要把入堆栈里的所有元素弹入出队栈;思路:用栈作为辅助结构,遍历字符串,当栈为空或者当前元素与栈顶不一样的时候就入栈,否则把栈顶元素弹出,这样就可以得到一个结果。思路:用个队列,每次要弹出元素时,先把前size-1个元素都弹出再加入队列,这样就可以弹出得到最后一个元素,符合栈的要求。思路:典型的用栈做括号匹配,遇到左括号,把对应的右括号入栈;遇到右括号,如果栈顶不匹配或者栈空则false;代码特点:用一个字符串代替栈。

2026-02-26 17:03:04 309

原创 DAY9|151.翻转字符串里的单词、卡码网:55.右旋转字符串

思路:先用快慢指针去除多余的空格,再逐个单词翻转;可以注意快慢指针去除空格这一步里,可以只收集字母并在新数组里第一位手动添加空格,这是一种做题思路的转变;代码特点:在for循环里,首先if判定起始处理的位置,while中进行单词终点的判断;= ' ')要防止越界。if (s[i]==' ' || i==s.size())里不能漏了。代码特点:用t.find(s)!思路:两个S拼一起,掐头去尾之后肯定还能在其中找出个S。

2026-02-04 10:22:06 254

原创 DAY8(字符串)|344.反转字符串、 541. 反转字符串II、

代码特点:遍历步长为2K,每次先判断剩余长度多不多于1K,如果多于就会在翻转后continue,不多于则翻转到尾;思路:先把字符串扩充到需要的长度,再从后向前填充。思路:每2k个数处理一次,只处理前1K个。代码特点:for循环直接跑连个指针;注意reverse接收的应该是。思路:头尾双指针,互换元素;

2026-02-03 18:28:04 315

原创 DAY7|454. 四数相加 II、 383.赎金信、 15.三数之和、 18. 四数之和

由于我们在第二层遍历里写的是if(k>a+2&&nums[k]==nums[k-1]&&nums[k-1]==nums[k-2]),也就是说我们实际允许了两个相邻的重复数出现在我们的搜索中,因此我们在找到一个结果后,需要set.erase(target);思路:先遍历A,B数组,用map记录每种a+b组合的出现次数,再遍历C,D数组,观察是否在map中出现0-(c+d)思路:类似异位词,先统计magazin的词频,再遍历ransomnote,一旦出现负数词就说明不能完成任务;思路:三数之和的拓展版本。

2026-02-02 22:47:37 157

原创 DAY6|哈希表理论基础、 242.有效的字母异位词 、 349. 两个数组的交集 、202. 快乐数

当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。思路:对数组里的元素,先判断与目标值的差值是不是已经被遍历过,如果有就输出两个数的下标,如果没有就用一个map记录它的数值和下标,这样经过一次遍历就可以找到对应于目标值的两个数的下标;的逻辑有问题,因为返回的是一个数组,应该写为return vector<int>{map[s], i};

2026-01-30 20:37:32 968

原创 代码随想录算法训练营DAY4|24. 两两交换链表中的节点 、 19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交 、142.环形链表II

思路:通过快慢指针能否相遇来判断是否有环,再根据数学关系得到相遇点到环入口的距离与头结点到环入口的距离差整数个环周,所以头结点出发的指针与快慢指针相遇点出发的指针必然在环入口处相遇;代码特点:计算长度之后要复位到头指针,用swap固定长短链表的变量名方便后续的代码编写;思路:找到相邻节点的前一个节点,将cur->1->2转换成cur->2->1。代码特点:第一个while循环走快指针,第二个while循环同时走快慢指针;思路:快慢指针找差n个单位的节点,注意要找的是要删除的元素的前一个节点;

2026-01-23 09:09:19 34

原创 代码随想录算法训练营DAY3|链表基础、203.移除链表元素、 反转链表

代码特点:使用temp指针指向cur->next,如果需要删除节点,C++不仅要让cur->next=cur->next->next,还要delete temp;代码特点:用pre和cur双指针定位当前需要修改朝向的节点,while循环遍历,用temp变量保存cur的下一个节点;思路:先要确定头结点的位置(比如说前几个值都恰好是目标值val),再删除后面的目标val节点。,以完成删除操作,因此我并未写else,导致即便删除成功也会向后移动,造成漏检。定位我们要删除的节点的前一个节点。

2026-01-21 09:41:19 374

原创 代码随想录算法训练营DAY2|209.长度最小的子数组、59.螺旋矩阵II、区间和

算法特点:需要设置每一圈的startx,starty,offset(用来确定终止位置),四层for循环遍历填充这一圈的四条边。思路:快指针用来搜索子数组的右边界,慢指针缩小子数组左边界的范围,用result记录最小的子数组长度。思路:随着数组的元素输入建立前缀和数组,使用前缀和数组计算固定区间的元素和;代码特点:presum记录前面的元素和,填入前缀和数组。该题的重点是用统一的左闭右开区间来进行每圈的遍历;该题的重点在于用双指针确定子数组的首尾位置;)后AC(二维数组的定义和空间申请)

2026-01-19 16:35:04 46

原创 代码随想录算法训练营DAY1|数组的特性、二分查找、移除元素、有序数组的平方

值得注意的是,k应该为数组中不为val的元素个数,同时由于在二层循环的移动后,所有i之后的元素都向前移位并覆盖了i,因此下一轮的遍历应当从当前的i位置出发,因此需要i--。核心在于对快慢指针的理解,快指针用于寻找新数组的元素,慢指针对应于新数组的下标;重点在于使用双指针对两端的数进行平方比较以确定result数组的值。a,数组的下标总是从0开始。b,数组的内存空间是连续的。在C++中,二维数组的内存地址也是连续的。二分查找法的易错点在于二分区间的性质(

2026-01-15 21:03:08 37

空空如也

空空如也

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

TA关注的人

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