代码随想录-刷题
文章平均质量分 63
每天刷题打卡
KleinLan
这个作者很懒,什么都没留下…
展开
-
【刷题】代码随想录算法训练营第十八天|513、找树左下角的值,112、路径总和,113、路径总和II,106、从中序与后序遍历序列构造二叉树,105、从前序与中序遍历序列构造二叉树
层序遍历直到最后一层,然后每次记录每一层的第一个值就可以找到最后一行最左边的值。找深度最大的叶子节点,然后优先左边搜索,就可以记录最后一行最左边的值。递归函数什么时候需要返回值?什么时候不需要返回值?原创 2024-04-20 13:59:21 · 329 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十七天|110、平衡二叉树,257、二叉树的所有路径,404、左叶子之和
分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。如何判断以当前传入节点为根节点的二叉树是否是平衡二叉树呢?当然是其左子树高度和其右子树高度的差值。如果当前传入节点为根节点的二叉树已经不是二叉平衡树了,还返回高度的话就没有意义了。递归的过程中依然是遇到空节点了为终止,返回0,表示当前节点为根节点的树高度为0。所以如果已经不是二叉平衡树了,可以返回-1 来标记已经不符合平衡树的规则了。返回值:以当前传入节点为根节点的树的高度。原创 2024-04-19 11:11:41 · 224 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十六天|222、完全二叉树的节点个数
【代码】【刷题】代码随想录算法训练营第十六天|222、完全二叉树的节点个数。原创 2024-04-18 10:13:19 · 166 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十五天|层序遍历,226、翻转二叉树(优先掌握递归),101、对称二叉树(优先掌握递归)
注意children中是一个vector,看题解方式以后也多用auto和迭代器的写法吧。注意三个if的关系,并不是if、else的非此即彼的关系。注意这题返回的应该是root节点,不要死记模版!广度优先遍历,一层一层的遍历输出。层序遍历每一次,保留最后一个节点。原创 2024-04-17 14:07:06 · 400 阅读 · 1 评论 -
【刷题】代码随想录算法训练营第十四天|二叉树:递归遍历,迭代遍历,统一迭代
中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中),这就造成了处理顺序和访问顺序是不一致的。前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。不是将前序改一下顺序就可以,因为前序访问的元素和要处理元素顺序是一致的,都是中间节点为先。后序遍历巧妙利用反转解决。暂时还不太理解 看讲解吧。原创 2024-04-16 10:49:45 · 315 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十三天|239、滑动窗口最大值,347、前K个高频元素,总结
使用单调队列。在代码随想录里好好理解一下单调队列处理这道滑动窗口最大值的问题,理解设计的MyQueue中的pop、push和front。347、前K个高频元素小项堆。原创 2024-04-16 09:13:52 · 288 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十一天|20、有效的括号,1047、删除字符中的所有相邻重复项,150、逆波兰表达式求值
经典栈解决问题:一遍循环,查看栈顶是否和当前循环元素相等,若相等栈顶出栈,否则入栈。三种不匹配:第一种是缺少匹配项,第二种是错误匹配项,第三种事多余匹配项。遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。括号匹配是使用栈解决的经典问题。原创 2024-04-13 20:02:09 · 240 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第十天|232、用栈实现队列,225、用队列实现栈
具体看讲解中如何用栈模拟队列的出和入。注意两个队列和一个队列模拟栈的想法。原创 2024-04-12 16:45:32 · 212 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第九天|28、实现strStr(),459、重复的子字符串,字符串总结,双指针回顾
KMP 先跳过KMP 先跳过建议如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。原创 2024-04-12 11:21:46 · 189 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第八天|344、反转字符串,541、反转字符串II,卡玛网:54、替换数字,151、翻转字符串里的单词,卡玛网:55、右旋转字符串
坚持不易,继续加油!原创 2024-04-10 11:10:59 · 138 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第七天|454、四数相加II,383、赎金信,15、三数之和,18、四数之和,总结
四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n。一些同学可能想,用数组干啥,都用map完事了,其实在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,而且还要做哈希函数,是费时的!这道题利用哈希法去重逻辑复杂,使用双指针法比哈希法高效。原创 2024-04-09 13:48:39 · 404 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第六天|242、有效的字母异位词,349、两个数组的交集,202、快乐数,1、两数之和
在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。原创 2024-04-08 22:17:49 · 165 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第四天|24、两两交换链表中的节点,19、删除链表的倒数第N个节点,面试题:02.07链表相交,142、环形链表II
快慢指针:fast和slow,因为是倒数第n个节点,所以让fast提前先走n+1步,最后做一次删除节点操作就可以。看清题目:如果两个链表相交末尾一定是相同的,因此采用末尾对齐再去找起始交点就可。以后链表操作都用虚拟头节点!初始虚拟头节点,cur指向虚拟头节点。原创 2024-04-06 14:32:21 · 300 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第三天|203、移除链表元素,707、设计链表,206、反转链表
此题设计链表的各种操作,见题解,特别是双链表法。原创 2024-04-06 11:04:59 · 215 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第二天| 977. 有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是一进循环深似海,从此offer是路人。代码如下,已经详细注释了每一步的目的,可以看出while循环里判断的情况是很多的,代码里处理的原则也是统一的左闭右开。这里每一种颜色,代表一条边,我们遍历的长度,可以看出每一个拐角处的处理规则,拐角处让给新的一条边来继续画。原创 2024-04-04 12:38:59 · 690 阅读 · 0 评论 -
【刷题】代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
暴力的解法就是两层for循环,一个for循环遍历数组元素,另一个for循环更新数组。也叫快慢指针法:通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。原创 2024-04-03 16:17:15 · 243 阅读 · 0 评论