给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
解题思路:对其进行遍历,添加或不添加即可。
class Solution {
List<List<Integer>> res_all = new ArrayList<>();
public List<List<Integer>> subsets(int[] nums) {
ArrayList<Integer> res_sub = new ArrayList<>();
process(nums, 0, res_sub);
return res_all;
}
public void process(int[] nums,int index,ArrayList<Integer> res_sub) {
if(index==nums.length) {
// 注意这一句
res_all.add(new ArrayList<>(res_sub));
return;
}
// 注意添加的返回值的boolean
res_sub.add(nums[index]);
process(nums, index+1, res_sub);
// 注意删除该值
res_sub.remove(res_sub.size()-1);
process(nums, index+1, res_sub);
}
}