leetcode-day25-回溯法

子集


题解:

我们从给的示例中可以看出,子集与组合的区别了,组合其实是在求树形结构的叶子节点,子集其实在求树所有的节点

1.递归方法的传参

题目中给定的集合nums,取过的元素不能重复取,因此需要一个start_index

2.终止条件

剩余集合为空的时候,就是终止的时候,也就是start_index >= len(nums),其实也可以不用加终止条件,因为前面的条件满足就是本层for循环结束

3.单层搜索逻辑

就是添加到path中,然后递归,然后回溯的过程,不需要剪枝

代码:

子集ii


题解:

本题和上面的不同之处在于,给定的集合中是有重复数字的,那就涉及到一个去重的问题

1.递归方法的参数

除了nums,start_index外,我们需要一个used来标记,当前下标的数字是否已经使用过

代码:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容