子集
程序员文章站
2022-07-14 08:02:36
...
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
这道题看似很难,但是好像就是难,但是做出来了,蜜汁做出????
import java.util.LinkedList;
import java.util.List;
class Solution {
List<List<Integer>> res = new LinkedList<>();
public void dfs(int []num, int i, int sum, LinkedList ls, int max) {
// 递归出口条件
if (sum == i) {
res.add(new LinkedList<>(ls));
}
// 加入元素
for (int j = max; j < num.length; j++) {
sum += 1;
ls.addLast(num[j]);
dfs(num, i, sum, ls, j+1);
sum -= 1;
ls.removeLast();
}
}
public List<List<Integer>> subsets(int[] nums) {
for(int i=1; i<=nums.length; i++){
List<Integer> ls = new LinkedList<>();
// 代表每次取几个作为字集个数
dfs(nums, i, 0, (LinkedList) ls, 0);
}
res.add(new LinkedList<>());
return res;
}
public static void main(String[] args) {
Solution s = new Solution();
s.subsets(new int[]{1,2,3});
}
}