给定一个含不同整数的集合,返回其所有的子集
class Solution{ public ArrayList<ArrayList<Integer>> subsets(int[] nums){ ArrayList<ArrayList<Integer>> ans= new ArrayList<>(); ans.add(new ArrayLIst<Integer>()); if(numbers==null||numbers.length==0) return ans;//空集也是子集 Arrays.sort(nums); for(int i=1;i<=nums.length;i++){ //依次找出,元素个数为1,为2...,为nums总长度的排列 helper(ans,new ArrayList<Integer>(),nums,0,i); } return ans; } //k用来指定此次排列还需要的元素个数 public void helper(ArrayList<ArrayList<Integer>> resSet, ArrayList<Integer> list, int[] nums, int start, int k) { //达到指定的长度,将此时的排列存入结果 if(k==0){ resSet.add(new ArrayList<Integer>(list)); return; } for(int i=start;i<nums.length;i++){ list.add(nums[i]); helper(resSet, list, nums, i+1, k-1); list.remove(list.size()-1); } } }