您的位置:首页 > 其它

80 leetcode - Subsets II

2017-01-09 10:57 330 查看
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Subsets II
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
'''
class Solution(object):
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
length = len(nums)
if length == 0:
return []
nums.sort()
return self.__subsets(nums,0,length,[],[],'',False)

def __subsets(self,a,start,length,result,ret,last_word,used_flag):
if start == length:
ret.append(list(result))
else:
#去重,记录上一个元素,如果与上一次元素相同,并且上一次元素没有使用,则本次也不使用
#print last_word,a[start]
if not (last_word == a[start] and used_flag == False):
last_word = a[start]
result.append(last_word)
self.__subsets(a,start + 1,length,result,ret,last_word,True)
result.pop()

self.__subsets(a,start + 1,length,result,ret,last_word,False)

return ret
if __name__ == "__main__":
s = Solution()
#print s.subsetsWithDup([1,2,2,2])
print s.subsetsWithDup([0]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息