排列组合子集
加油开心
你好呀
展开
-
leetcode:组合总和
之前子集组合如何保证不重复?就是start变量,下一个从start+1开始。这里start开始,下次还是start开始。比如1,2,3,target=3。原创 2024-04-10 23:08:38 · 108 阅读 · 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 · 105 阅读 · 0 评论 -
leetcode:组合总和II
其实就是在元素可重复不可复选子集题里加一个变量用于记录和。再来一个if判断是否等于target即可。和元素可重复不可复选子集题差不多。原创 2024-04-10 22:36:24 · 150 阅读 · 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 · 106 阅读 · 0 评论 -
leetcode:全排列
返回的是数组里面有数组,那就是List那么该走那条路,比如1下来是2,还是3,used。需要记录已经走过的路,track。可以看成决策树,所以需要链表。原创 2024-04-08 09:51:58 · 153 阅读 · 0 评论 -
leetcode:组合
比如如下,我要取1,2,3中有2个元素的,取出来,即下放画横线的。只不过把子集那棵树的某一行取出来即可。这个和子集其实是一样的。原创 2024-04-10 21:52:22 · 121 阅读 · 0 评论 -
leetcode:子集
所以你看截枝的方法就是顺序不能搞乱,必须顺序,比如1,3就是顺序,1,2就是顺序,但3,1不行。比如1,3,2由于2在3后面,顺序搞反了,截掉。下面这个决策树抛开题是所有可能结果。2,1,1要在2前面,搞反了,截掉。截哪些应该很容易看出来。但我们想要的只有部分。原创 2024-04-10 21:41:51 · 132 阅读 · 0 评论