给定一个数组,生成子集
leetcode
public List<List<Integer>> subsets(int[] nums) {
return subsets(nums, nums.length);
}
private List<List<Integer>> subsets(int[] nums, int len) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (nums.length==0) {
List<Integer> t = new ArrayList<>();
res.add(t);
} else if (len == 1) {
List<Integer> t = new ArrayList<>();
res.add(t);
List<Integer> t1 = new ArrayList<>();
t1.add(nums[0]);
res.add(t1);
} else {
List<List<Integer>> x = subsets(nums, len-1);
res.addAll(x);
x.forEach(e->{
List<Integer> t = new ArrayList<>();
t.addAll(e);
t.add(nums[len-1]);
res.add(t);
});
}
return res;
}