子集
题解:
我们从给的示例中可以看出,子集与组合的区别了,组合其实是在求树形结构的叶子节点,子集其实在求树所有的节点
1.递归方法的传参
题目中给定的集合nums,取过的元素不能重复取,因此需要一个start_index
2.终止条件
剩余集合为空的时候,就是终止的时候,也就是start_index >= len(nums),其实也可以不用加终止条件,因为前面的条件满足就是本层for循环结束
3.单层搜索逻辑
就是添加到path中,然后递归,然后回溯的过程,不需要剪枝
代码:
子集ii
题解:
本题和上面的不同之处在于,给定的集合中是有重复数字的,那就涉及到一个去重的问题
1.递归方法的参数
除了nums,start_index外,我们需要一个used来标记,当前下标的数字是否已经使用过
代码: