您的位置:首页 > 编程语言 > Python开发

LeetCode 90 SubsetsII (Python详解及实现)

2017-08-09 19:34 531 查看
【题目】

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])


 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode Python