要求:
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。
- 示例 1
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
- 示例 2
输入:nums = [0]
输出:[[],[0]]
详解代码
class Solution(object):
def subsetsWithDup(self, nums):
result = [[]]
for num in nums:
for index in range(len(result)):
new_list = result[index] + [num]
new_list.sort()
result.append(new_list)
unique = set(tuple(val) for val in result)
return list(list(val) for val in unique)
解题思路:和子集Ⅰ的解题思路是一样的,我们不断其中的已有元素的列表追加元素,但是多了个步骤,对新和成的列表进行排序,免得[1,2,2]和[2,1,2]认为是不同的,最后借助set进行去重。