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.

 1Input: [1,2,2]
 2Output:
 3[
 4  [2],
 5  [1],
 6  [1,2,2],
 7  [2,2],
 8  [1,2],
 9  []
10]
1def subsetsWithDup(nums):
2  nums.sort()
3  res = {tuple(nums)}
4  subs = {tuple(nums)}
5  while subs:
6      subs = {sub[:i] + sub[i+1:] for sub in subs for i in range(len(sub))}
7      res |= subs
8  return res
1def subsetsWithDup(nums):
2  res = [[]]
3  nums.sort()
4  for num in nums: 
5      res += [ i + [num] for i in res if i + [num] not in res]
6  return res