题目
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解法
class Solution {
public List<List<Integer>> subsets(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> list = new ArrayList();
list.add(new ArrayList());
add(list, nums, null);
return list;
}
public void add(List<List<Integer>> list, int[] nums,List<Integer> l){
for(int i : nums){
if(l==null){
List<Integer> ll = new ArrayList<>();
ll.add(i);
list.add(ll);
add(list, nums,ll);
}else{
if(i > l.get(l.size()-1)){
List<Integer> ll = new ArrayList<>();
ll.addAll(l);
ll.add(i);
list.add(ll);
add(list, nums,ll);
}
}
}
}
}