难度中等550收藏分享切换为英文关注反馈
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
思路参照我写的77题很简单
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<Integer> l=new ArrayList<>();
List<List<Integer>> list=new ArrayList<>();
for(int i=0;i<=nums.length;i++) {
hs(list,l,0,i,0,nums);
}
return list;
}
public void hs(List<List<Integer>> list,List<Integer> l,int start,int k,int sum,int[] num) {
if(sum>k)
return ;
if(sum==k) {
list.add(new ArrayList<Integer>(l));
}
for(int i=start;i<num.length;i++) {
if(sum>k)
break;
l.add(num[i]);
hs(list,l,i+1,k,sum+1,num);
l.remove(l.size()-1);
}
}
}