子集 II(带重复元素的子集)
2018-03-19 本文已影响34人
只为此心无垠
给定一个可能包含重复整数的列表,返回所有可能的子集(幂集)。
注意事项:解决方案集不能包含重复的子集。
例如,如果 nums = [1,2,2],答案为:
对比题目:
全排列
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
class Solution(object):
def subjectHelper(self, nums, start):
self.resultAll.append(list(self.result))
for i in range(start,len(nums)):
if start != i and nums[i] == nums[i - 1]:
continue
self.result.append(nums[i])
self.subjectHelper(nums, i+1)
self.result.pop()
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums) == 0:
return []
self.result = []
self.resultAll = []
self.subjectHelper(sorted(nums), 0)
return self.resultAll