
回溯算法
加油开心
你好呀
展开
-
leetcode:求根节点到叶节点数字之和
以这个为例,到124,计算完之后,要返回到12,你懂吧,减去4除以10。遍历的时候就依次加,然后判断即可。就是下面代码递归的下面的一行。原创 2024-09-01 13:56:36 · 160 阅读 · 0 评论 -
leetcode:二叉树的所有路径
返回条件就是root为null,或者root左右节点为null。建议使用java自带api string.join。他是将不同字符串中间用你指定的符号连接起来。其他情况就符合了,添加起来。就是返回字符串里面有->和之前有一道题很类似。原创 2024-09-01 11:51:32 · 234 阅读 · 0 评论 -
leetcode:组合总和
之前子集组合如何保证不重复?就是start变量,下一个从start+1开始。这里start开始,下次还是start开始。比如1,2,3,target=3。原创 2024-04-10 23:08:38 · 151 阅读 · 0 评论 -
leetcode:全排列II
这个剪枝逻辑就是比如1,2,2‘,首先肯定是判断前后是否相等,然后还要加一条。因为1,2,2‘’,你2‘’前面是2‘,没用,直接2’‘,肯定要剪去。比如下图,最右边,你2都没用,直接2‘,剪去。你可以以1,2,2‘,2’‘为例想一下。只有1,2,2’不会剪,剩下都被剪去。2’只有在2用了的情况下才能使用。原创 2024-04-10 22:53:28 · 155 阅读 · 0 评论 -
leetcode:组合总和II
其实就是在元素可重复不可复选子集题里加一个变量用于记录和。再来一个if判断是否等于target即可。和元素可重复不可复选子集题差不多。原创 2024-04-10 22:36:24 · 203 阅读 · 0 评论 -
leetcode:子集II
所以这个截枝逻辑就是如果一个节点有相同的枝,比如下图左侧,1节点左边是2,右边也是2。即先对其排序,那么相同的节点会挨在一起,判断nums[i]是否等于nums[i-1]为啥要把1,3截去?你把1,3看成1,2’,那么和1,2一样了,重复了。你可以把3看成第二个2,即2‘下图是标准的子集组合决策树。那么只遍历一条,剩下剪掉。如果相等,那么剪掉一枝。子集I是无重无复选,原创 2024-04-10 22:20:02 · 159 阅读 · 0 评论 -
leetcode:组合
比如如下,我要取1,2,3中有2个元素的,取出来,即下放画横线的。只不过把子集那棵树的某一行取出来即可。这个和子集其实是一样的。原创 2024-04-10 21:52:22 · 167 阅读 · 0 评论 -
leetcode:子集
所以你看截枝的方法就是顺序不能搞乱,必须顺序,比如1,3就是顺序,1,2就是顺序,但3,1不行。比如1,3,2由于2在3后面,顺序搞反了,截掉。下面这个决策树抛开题是所有可能结果。2,1,1要在2前面,搞反了,截掉。截哪些应该很容易看出来。但我们想要的只有部分。原创 2024-04-10 21:41:51 · 176 阅读 · 0 评论 -
leetcode:N皇后II
这个和N皇后区别就是,这个是返回个数。改最后一行返回值即可。原创 2024-04-08 21:16:30 · 197 阅读 · 0 评论 -
leetcode:N皇后
你需要做出选择,还要记录走过的。每一行代表决策树的一层。原创 2024-04-08 21:01:11 · 190 阅读 · 0 评论 -
leetcode:全排列
返回的是数组里面有数组,那就是List那么该走那条路,比如1下来是2,还是3,used。需要记录已经走过的路,track。可以看成决策树,所以需要链表。原创 2024-04-08 09:51:58 · 195 阅读 · 0 评论