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.
For example,
If nums = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]
思路:dfs。两个坑:1.注意怎样区分重复数 2.要先排序!!!
class Solution(object):
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
nums.sort()
res = []
self.dfs(nums, res, [], 0)
return res
def dfs(self, nums, res, path, index):
res.append(path)
for i in range(index, len(nums)):
if i > index and nums[i] == nums[i-1]: #重点注意这里,不是i>1 而是i>index
continue
self.dfs(nums, res, path+[nums[i]], i+1)