【题目】
Given a collection of integers that mightcontain duplicates, nums, return all possible subsets.
Note: The solution set must not containduplicate subsets.
For example,
If nums = [1,2,2], a solution is:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
【思路】
是78 题subsets的升级,集合中加入了重复元素,这样可以判断集合中是否已有当前子集,若无则将该子集加入到res中
【Python实现】
【题目】
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
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],
[]
]
【思路】
是78 题subsets的升级,集合中加入了重复元素,这样可以判断集合中是否已有当前子集,若无则将该子集加入到res中
【Python实现】
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 9 19:21:31 2017
@author: Administrator
"""
class Solution(object):
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def dfs(depth, start, valuelist):
if valuelist not in res:
res.append(valuelist)
if depth == len(nums):
return
for i in range(start, len(nums)):
dfs(depth+1, i+1, valuelist+[nums[i]])
nums.sort()
res = []
dfs(0, 0, [])
print(res)
return res
if __name__ == '__main__':
S= Solution()
S.subsetsWithDup([1,2,2])
本文介绍了一种算法,用于生成包含重复整数的集合的所有可能子集,并确保解决方案中不含重复的子集。以[1,2,2]为例,详细展示了如何通过递归深度优先搜索的方法,避免重复并生成所有唯一子集。

1277

被折叠的 条评论
为什么被折叠?



