image.png

解决思路

回溯算法

  1. public List<List<Integer>> subsets(int[] nums) {
  2. List<List<Integer>> res = new ArrayList<>();
  3. backtrack(0,nums,res,new ArrayDeque<>());
  4. return res;
  5. }
  6. private void backtrack(int begin,int[] nums,List<List<Integer>> res,Deque<Integer> tmp){
  7. res.add(new ArrayList<>(tmp));
  8. for (int j = begin;j < nums.length;j++){
  9. tmp.addLast(nums[j]);
  10. backtrack(j+1,nums,res,tmp);
  11. tmp.removeLast();
  12. }
  13. }