78. Subsets (sets)
backtrack的思想
https://blog.csdn.net/wonner_/article/details/80373871
这个链接很好
subset中的backtrack要把最后一个param设置成现在进行遍历的位置,而且backtrack中的循环要在上一个position之后开始
1 class Solution { 2 public List<List<Integer>> subsets(int[] nums) { 3 List<List<Integer>> res = new ArrayList<>(); 4 backtrack(res, new ArrayList<>(), nums, 0); 5 return res; 6 7 } 8 9 public void backtrack(List<List<Integer>> res, List<Integer> list, int[] nums, int position) { 10 res.add(new ArrayList<>(list)); //java pass by reference 如果不这样 之后list的值改变了 之前的也会变 11 for(int i = position; i < nums.length; i++) { 12 list.add(nums[i]); 13 backtrack(res, list, nums, i + 1); 14 list.remove(list.size() - 1); 15 } 16 } 17 }