子集和组合问题基本一致,只是需要再递归一开始就将path加入到result数组。
1 子集
给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的
子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
此处有两种边界判断方式:
- 1 if (path.size() == nums.size()) return ;
- path长度符合nums.size()的在此条件下返回
- path长度不符合nums.size()条件,但是又不会进入下面的for循环,函数运行完自动back
- 2 if (start >= nums.size()) return ;
2 子集II
给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的
子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
同样的层树不能重复,具体可以看组合总和II和全排列II中的处理。