给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
1 class Solution { 2 public List<List<Integer>> subsets(int[] nums) { 3 List<List<Integer>> res=new ArrayList<List<Integer>>(); 4 for(int i=1;i<=nums.length;i++){ 5 List<Integer> temp=new ArrayList<Integer>(); 6 dfs(res,temp,nums,i,0); 7 } 8 res.add(new ArrayList<Integer>()); 9 return res; 10 } 11 12 public void dfs(List<List<Integer>> res,List<Integer> temp,int[] nums,int k,int m){ 13 if(k==0){ 14 res.add(new ArrayList<Integer>(temp)); 15 return; 16 } 17 for(int i=m;i<nums.length;i++){ 18 temp.add(nums[i]); 19 dfs(res,temp,nums,k-1,i+1); 20 temp.remove(temp.size()-1); 21 } 22 } 23 }