解决思路
回溯算法
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
backtrack(0,nums,res,new ArrayDeque<>());
return res;
}
private void backtrack(int begin,int[] nums,List<List<Integer>> res,Deque<Integer> tmp){
res.add(new ArrayList<>(tmp));
for (int j = begin;j < nums.length;j++){
tmp.addLast(nums[j]);
backtrack(j+1,nums,res,tmp);
tmp.removeLast();
}
}