- Subsets II
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.
Example:
Input: [1,2,2]
Output:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
python:
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
res = []
nums.sort()
self.dosubset(nums,0,[],res)
return res
def dosubset(self,nums,index,path,res):
res.append(path)
for i in range(index,len(nums)):
if i>index and nums[i] == nums[i-1]:
continue
self.dosubset(nums,i+1,path+[nums[i]],res)
java:
class Solution {
public List<List<Integer>> subsetsWithDup(int[] nums) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
List<Integer> subset = new ArrayList<Integer>();
res.add(subset);
Arrays.sort(nums);
dosubset(nums,subset,res,0);
return res;
}
private void dosubset(int[] nums,List subset,List res,int index){
for(int i = index;i<nums.length;i++){
if(i>index && nums[i]==nums[i-1])
continue;
subset.add(nums[i]);
res.add(new ArrayList(subset));
dosubset(nums,subset,res,i+1);
subset.remove(subset.get(subset.size()-1));
}
}
}