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 }

猜你喜欢

转载自www.cnblogs.com/goPanama/p/9545718.html
今日推荐