1. 程式人生 > >[leetcode]90. Subsets II數組子集(有重)

[leetcode]90. Subsets II數組子集(有重)

html log pos NPU ML 子集 all out pre

Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Input: [1,2,2]
Output:
[
  [2],
  [1],
  [1,2,2],
  [2,2],
  [1,2],
  []
]

題意:

是的[leetcode]78. Subsets數組子集 follow up

這題強調給定數組可以有重復元素

思路:

需要先對給定數組排序,以便去重

代碼:

 1 class Solution {
 2     public List<List<Integer>> subsetsWithDup(int[] nums) {
 3         List<List<Integer>> result = new ArrayList<>();
 4         if(nums == null || nums.length ==0 )return result;
 5         Arrays.sort(nums);
 6         List<Integer> path = new
ArrayList<>(); 7 dfs(0, nums, path, result); 8 return result; 9 } 10 11 private void dfs(int index, int[] nums, List<Integer> path, List<List<Integer>> result){ 12 result.add(new ArrayList<>(path)); 13 for(int i = index; i < nums.length; i++){
14 if( i != index && nums[i] == nums[i-1] ) continue; 15 path.add(nums[i]); 16 dfs(i + 1, nums, path, result); 17 path.remove(path.size() - 1); 18 } 19 } 20 }

[leetcode]90. Subsets II數組子集(有重)