解题思路:
回溯
提交代码:
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> ans=new ArrayList<List<Integer>>();
List<Integer> curSet=new ArrayList<Integer>();
ans.add(curSet);
Arrays.sort(nums);
for(int i=0;i<nums.length;i++) {
curSet.add(nums[i]);
List<Integer> tmp=new ArrayList<Integer>();
tmp.addAll(curSet);
ans.add(tmp);
findSubSets(1,nums,curSet,ans);
curSet.remove(curSet.size()-1);
}
return ans;
}
public void findSubSets(int p,int[] nums,List<Integer> curSet,List<List<Integer>> ans) {
if(curSet.size()==nums.length) return;
for(int i=p;i<nums.length;i++) {
if(nums[i]>curSet.get(curSet.size()-1)){
curSet.add(nums[i]);
List<Integer> tmp=new ArrayList<Integer>();
tmp.addAll(curSet);
ans.add(tmp);
findSubSets(p+1,nums,curSet,ans);
curSet.remove(curSet.size()-1);
}
}
}
}
运行结果: