
代码随想录
文章平均质量分 55
记录
万事大吉CC
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营day15|104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。先看视频讲解,和最大深度 看似差不多,其实 差距还挺大,有坑。104.二叉树的最大深度 559.n叉树的最大深度。需要了解,普通二叉树 怎么求,完全二叉树又怎么求。222.完全二叉树的节点个数(优先掌握递归)104.二叉树的最大深度 (优先掌握递归)111.二叉树的最小深度 (优先掌握递归)222.完全二叉树的节点个数。111.二叉树的最小深度。原创 2024-01-29 20:15:00 · 255 阅读 · 1 评论 -
代码随想录算法训练营day15|226.翻转二叉树、101.对称二叉树
前序遍历和后序遍历都可以进行翻转二叉树,因为可以保证左右子树的原始顺序。如果是中序遍历的话,左->中(交换了左右子树)->右处理右子树时实际上是处理左子树,违背了我们的初衷。这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。写递归不要关注子问题的过程,很容易晕,要想子问题的结果,写好边界条件和非边界条件,剩下的交给计算机。看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。先看视频讲解,会更容易一些。3.确定单层递归的逻辑。原创 2024-01-25 18:38:31 · 609 阅读 · 0 评论 -
代码随想录算法训练营day14|二叉树的遍历
需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。统一迭代 (基础不好的录友,迭代法可以放过)这是统一迭代法的写法, 如果学有余力,可以掌握一下。二叉树的三种递归遍历掌握其规律后,其实很简单。迭代遍历 (基础不好的录友,迭代法可以放过)递归遍历 (必须掌握)接受二叉树遍历结果val。前/中/后序遍历同理。原创 2024-01-23 17:13:52 · 620 阅读 · 0 评论 -
代码随想录算法训练营day13|239.滑动窗口最大值、347.前K个高频元素
239. 滑动窗口最大值347.前 K 个高频元素239. 滑动窗口最大值 (一刷至少需要理解思路之前讲的都是栈的应用,这次该是队列的应用了。本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。347.前 K 个高频元素。原创 2024-01-19 19:52:58 · 446 阅读 · 0 评论 -
代码随想录算法训练营day11|20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值
要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。本题不难,但第一次做的话,会很难想到,所以先看视频,了解思路再去做题。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。1047. 删除字符串中的所有相邻重复项。1047. 删除字符串中的所有相邻重复项。150. 逆波兰表达式求值。150. 逆波兰表达式求值。原创 2024-01-19 10:32:52 · 377 阅读 · 0 评论 -
代码随想录算法训练营day10|232.用栈实现队列、225.用队列实现栈
大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解。了解一下 栈与队列的内部实现机智。,文中是以C++为例讲解的。225. 用队列实现栈。225. 用队列实现栈。232.用栈实现队列。232.用栈实现队列。原创 2024-01-17 20:04:00 · 506 阅读 · 0 评论 -
代码随想录算法训练营day9|28.实现strStr()、459.重复的子字符串
因为大家 算法能力还没到,细扣 很难的算法,会把自己绕进去,就算别人给解释,只会激发出更多的问题和疑惑。因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的疑问,先留着,别期望立刻啃明白,第一遍了解大概思路,二刷的时候,再看KMP会 好懂很多。KMP和本题,一刷的时候 ,可以适当放过,了解怎么回事就行,二刷的时候再来硬啃。或者说大家可以放弃一刷可以不看KMP,今天来回顾一下之前的算法题目就可以。双指针的题目了,来一起回顾一下,大家自己也总结一下双指针的心得。原创 2024-01-16 17:33:37 · 477 阅读 · 0 评论 -
代码随想录算法训练营day8|344.反转字符串、541.反转字符串II、54.替换数字、151.翻转字符串里的单词、55.右旋转字符串
建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数。建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。建议:对于线性数据结构,填充或者删除,后序处理会高效的多。建议:题解中的解法如果没接触过的话,应该会想不到。卡码网:55.右旋转字符串。541. 反转字符串II。541. 反转字符串II。原创 2024-01-14 14:20:53 · 410 阅读 · 0 评论 -
代码随想录算法训练营day7|454.四数相加II 、383.赎金信、15.三数之和、18.四数之和
建议: 要比较一下,本题和 454.四数相加II 的区别,为什么 454.四数相加II 会简单很多,这个想明白了,对本题理解就深刻了。建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。454.四数相加II。原创 2024-01-14 10:18:48 · 518 阅读 · 0 评论 -
代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数
建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0原创 2024-01-04 21:56:42 · 554 阅读 · 0 评论 -
代码随想录算法训练营day4|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、链表相交、142.环形链表II
要删除倒数第n个节点,先让fast移动n步,然后fast和slow同时移动,直到fast指向链表末尾,此时删掉slow指向的节点即可。因为只有这样同时移动的时候slow才能指向删除节点的上一个节点,方便做删除操作。双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。算是链表比较有难度的题目,需要多花点时间理解 确定环和找环入口,建议先看视频。本题没有视频讲解,大家注意 数值相同,不代表指针相同。19.删除链表的倒数第N个节点。142.环形链表II。原创 2024-01-03 10:38:15 · 486 阅读 · 0 评论 -
代码随想录算法训练营day3|203.移除链表元素、707.设计链表、206.反转链表
定义一个cur指针(head),pre指针(NULL),定义一个临时变量tmp把cur->next的内容拿出来,然后把pre指针放进去,就完成了节点的反转。更新pre指针(cur),cur指针(tmp)。循环结束时,cur一定指向最后一个节点的->next==NULL,pre一定指向最后一个节点。这个代码实现逻辑和双指针实现逻辑一模一样,实质上都是从前往后反转指针指向,其实还可以从后往前反转指针。对象并传递一个整数给它时,这个构造函数将确保该节点的值被设置为该整数,并且该节点没有指向任何下一个节点(因为。原创 2023-12-30 14:03:17 · 629 阅读 · 0 评论 -
代码随想录算法训练营day2|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
Introsort算法在排序的过程中,首先使用快速排序来快速地进行划分,当快速排序的递归深度超过一定限制时,为了避免快速排序的最坏情况时间复杂度O(n^2)的发生,转而使用插入排序,这样可以保证时间复杂度不会超过O(nlogn)。最直观的方法就是遍历数组并平方,然后对新数组排序,排序如果使用冒泡的话,输入规模最大1e4,在O(n^2)下就是1e8,估计会超时的,试了一下确实超时了。数组最大的数满足max{左端,右端},使用双指针,i指向左起始位置,j指向右起始位置。虽然我觉得跟毛毛虫一样。原创 2023-12-28 21:34:11 · 1026 阅读 · 0 评论 -
代码随想录算法训练营day1|704.二分查找、27.移除元素
初始化左指针i为数组首,右指针j为数组尾。分别用循环来模拟左指针右移,右指针左移:左指针在nums[i]==val时停下,右指针在nums[j]!然后直接用右指针指向元素覆盖左指针指向元素,当左右相错结束循环,左指针一定指向最终数组尾。: 大家能把 704 掌握就可以,35.搜索插入位置 和 34. 在排序数组中查找元素的第一个和最后一个位置 ,如果有时间就去看一下,没时间可以先不看,二刷的时候在看。显然暴力法就是遍历数组,当nums[i]==val时,从下标i+1开始所有元素前移一位,并将len-1。原创 2023-12-27 19:00:15 · 1172 阅读 · 0 评论