代码随想录算法训练营
文章平均质量分 50
海棠依旧€
少卷多躺平 佛系才能赢
展开
-
代码随想录算法训练营第31天|贪心算法——跳跃游戏
从图中可以看出来,就是移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。最后的步数就是最少步数。这里还是有个特殊情况需要考虑,当移动下标达到了当前覆盖的最远距离下标时。原创 2022-11-26 15:52:54 · 117 阅读 · 0 评论 -
代码随想录算法训练营第30天|回溯总结
所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。原创 2022-11-18 14:25:46 · 156 阅读 · 0 评论 -
代码随想录算法训练营第28天|● 93.复原IP地址 ● 78.子集 ● 90.子集II
力扣切割问题可以抽象为树型结构,如图:在131.分割回文串 (opens new window)中我们就提到切割问题类似组合问题。startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。本题我们还需要一个变量pointNum,记录添加逗点的数量。终止条件和131.分割回文串 (opens new window)情况就不同了,本题明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,而是分割的段数作为终止条件。pointNum表示逗点数量,pointNum为3说明字符串分成了4原创 2022-10-30 16:49:27 · 798 阅读 · 0 评论 -
代码随想录算法训练营第27天|39. 组合总和● 40.组合总和II● 131.分割回文串
一、39. 组合总和。原创 2022-10-28 16:40:31 · 1183 阅读 · 0 评论 -
代码随想录算法训练营第25天|216.组合总和III● 17.电话号码的字母组合天|
再来看参数,参数指定是有题目中给的string digits,然后还要有一个参数就是int型的index和numString映射表。(这个index是记录遍历第几个数字了,就是用来遍历digits的(题目中给出数字字符串),同时index也表示树的深度。那么终止条件就是如果index 等于 输入的数字个数(digits.size)了(本来index就是用来遍历digits的)。例如输入用例"23",两个数字,那么根节点往下递归两层就可以了,叶子节点就是要收集的结果集。然后收集结果,结束本层递归。原创 2022-10-27 17:00:50 · 900 阅读 · 0 评论 -
代码随想录算法训练营第22天|235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
在中,如果递归函数有返回值,如何区分要搜索一条边,还是搜索整个树。本题就是标准的搜索一条边的写法,遇到递归函数的返回值,如果不为空,立刻返回。原创 2022-10-21 22:33:34 · 1285 阅读 · 0 评论 -
代码随想录算法训练营第23天|669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
1、如果root(当前节点)的元素小于low的数值,那么应该递归右子树,并返回右子树符合条件的头结点。2、如果root(当前节点)的元素大于high的,那么应该递归左子树,并返回左子树符合条件的头点。3、接下来要将下一层处理完左子树的结果赋给root->left,处理完右子树的结果赋给root->right。原创 2022-10-23 20:42:19 · 1079 阅读 · 0 评论 -
代码随想录算法训练营第24天|回溯理论基础、77.组合
回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,那么既然回溯法并不高效为什么还要用它呢?因为没得选,一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法。回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。for循环就是遍历集合区间,可以理解一个节点有多少个孩子,这个for循环就执行多少次。backtracking这里自己调用自己,实现递归。大家可以从图中看出,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果了。原创 2022-10-26 19:32:09 · 920 阅读 · 0 评论