90. Subsets II (sets)

同Subset
就是要先进行排序,backtrack的时候不要把重复的加入list

 1 class Solution {
 2     public List<List<Integer>> subsetsWithDup(int[] nums) {
 3         List<List<Integer>> res = new ArrayList<>();
 4         Arrays.sort(nums);
 5         backtrack(res, new ArrayList<>(), nums, 0);
 6         return res;
 7     }
 8     public void backtrack(List<List<Integer>> res, List<Integer> list, int[] nums, int position) {
 9         res.add(new ArrayList<>(list));
10         for(int i = position; i < nums.length; i++) {
11             if(i > position && nums[i] == nums[i - 1]) continue;
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/9545732.html
今日推荐