https://leetcode-cn.com/problems/subsets/
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> subsets = new ArrayList<>();
int[] n = new int[0];
subsets(n,nums,subsets,0);
return subsets;
}
private void subsets(int[] num,int[] formnum,List<List<Integer>> list,int flag) {
List<Integer> set = new ArrayList<>();
int[] newset = new int[num.length+1];
for(int i=0;i<num.length;i++) {set.add(num[i]);newset[i]=num[i];}
list.add(set);
cc:for(int j=flag;j<formnum.length;j++)
{
//去掉已选数
for(int n=0;n<num.length;n++) if(formnum[j]==num[n]) continue cc;
newset[newset.length-1] = formnum[j];
subsets(newset,formnum,list,j);
}
}
}
优化方向:
①不用迭代完成一次
②简洁