给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: [1,2,2]
输出:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
nums = sorted(nums)
ans = []
cur = []
self.solve(nums,ans,cur,0)
return ans
def solve(self,nums,ans,cur,s):
ans.append(cur[:])
for i in range(s,len(nums)):
if i!=s and nums[i] == nums[i-1]: ## 重复元素,每一层只加入一个
continue
cur.append(nums[i])
self.solve(nums,ans,cur,i+1)
cur.pop()