给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
方法一:递归法
太变态了
class Solution {
public static void addHelper(int i,int[] nums,List<List<Integer>> ret,ArrayList<Integer> tmp){
ret.add(new ArrayList<>(tmp));
for (int j = i; j < nums.length; j++) {
tmp.add(nums[j]);
addHelper(j + 1,nums,ret,tmp);
tmp.remove(tmp.size() - 1);
}
}
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> ret = new ArrayList<>();
addHelper(0,nums,ret,new ArrayList<Integer>());
return ret;
}
}
List<Integer> tmp = new ArrayList<>();
tmp.add(2);
tmp.add(29);
List<List<Integer>> ret = new ArrayList<>();
ret.add(tmp);
tmp.add(20);
ret.add(tmp);
System.out.println(ret);
[[2, 29, 20], [2, 29, 20]]
List<Integer> tmp = new ArrayList<>();
tmp.add(2);
tmp.add(29);
List<List<Integer>> ret = new ArrayList<>();
ret.add(new ArrayList<>(tmp));
tmp.add(20);
ret.add(new ArrayList<>(tmp));
System.out.println(ret);
[[2, 29], [2, 29, 20]]
本文介绍了一种使用递归法生成给定整数数组所有可能子集(幂集)的方法,确保解集中不包含重复子集。通过具体示例展示了如何实现这一算法。
1088

被折叠的 条评论
为什么被折叠?



