使用递归,核心是temp添加一个元素,递归调用自身然后去除元素
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> lst=new ArrayList<>();
Arrays.sort(nums);
helper(lst,new ArrayList<Integer>(),nums,0);
return lst;
}
public void helper(List<List<Integer>> lst,ArrayList<Integer> temp,int[] nums,int start){
int len=nums.length;
lst.add(new ArrayList<Integer>(temp));
for(int i=start;i<len;i++){ //此处吧start改成0即可使用全排列,这时要判断temp是不是满了长度
temp.add(nums[i]);
helper(lst,temp,nums,i+1);
temp.remove(temp.size()-1);
}
}
}