classSolution:defsubsetsWithDup(self, nums: List[int])-> List[List[int]]:# 解法一: 使用组合函数和extend函数# (了解该方法即可,一般考核的时候不要尝试)
res =[]
nums.sort()#关键行for i inrange(len(nums)+1):
res.extend(list(set(itertools.combinations(nums, i))))# 疑惑的是为什么内部的集合会被平台自动转成列表return res
解法二:使用collections.Counter()
classSolution:defsubsetsWithDup(self, nums: List[int])-> List[List[int]]:# 解法一: 使用组合函数和extend函数# (了解该方法即可,一般考核的时候不要尝试)
res =[[]]for key, value in collections.Counter(nums).items():
res =[pre +[key]*cnt for pre in res for cnt inrange(value+1)]"""
不断迭代,将前一轮的,根据cnt,在每个答案后面添加key
"""return res