给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路
对于每一个数,都有可选和不选两条路,这样能形成一棵二叉树
class Solution {
int n=0;
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> L = new ArrayList<List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
if (nums.length == 0 || nums==null){
return L;
}
sub(list, L, n, nums);
return L;
}
public void sub(List<Integer> list, List<List<Integer>> L, int n, int[] nums){
if (n == nums.length){
L.add(list);
return;
}
List<Integer> list1 = new ArrayList<>();
list1.addAll(list);
list1.add(nums[n]);
sub(list1, L, n+1, nums);
sub(list, L, n+1, nums);
}
}
网友评论