leetcode: 90. Subsets II
来源:互联网 发布:高腰西裤女淘宝 编辑:程序博客网 时间:2024/06/05 10:37
Q
Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).
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], []]
AC
class Solution(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ self.result = set() for i in range(len(nums)+1): self.getCombi(nums, i,[]) return list(self.result) def getCombi(self, nums, i, temp): if i==0: self.result.add(tuple(sorted(temp))) elif not nums: return else: self.getCombi(nums[1:], i-1, temp+[nums[0]]) self.getCombi(nums[1:], i, temp)# Time: O(n * 2^n)# Space: O(1)class Solution2(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ nums.sort() result = [[]] previous_size = 0 for i in xrange(len(nums)): size = len(result) for j in xrange(size): # Only union non-duplicate element or new union set. if i == 0 or nums[i] != nums[i - 1] or j >= previous_size: result.append(list(result[j])) result[-1].append(nums[i]) previous_size = size return result# Time: O(n * 2^n) ~ O((n * 2^n)^2)# Space: O(1)class Solution3(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ result = [] i, count = 0, 1 << len(nums) nums.sort() while i < count: cur = [] for j in xrange(len(nums)): if i & 1 << j: cur.append(nums[j]) if cur not in result: result.append(cur) i += 1 return result# Time: O(n * 2^n) ~ O((n * 2^n)^2)# Space: O(1)class Solution4(object): def subsetsWithDup(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ result = [] self.subsetsWithDupRecu(result, [], sorted(nums)) return result def subsetsWithDupRecu(self, result, cur, nums): if not nums: if cur not in result: result.append(cur) else: self.subsetsWithDupRecu(result, cur, nums[1:]) self.subsetsWithDupRecu(result, cur + [nums[0]], nums[1:])if __name__ == "__main__": assert Solution().subsetsWithDup([1, 2, 2]) == [(1, 2), (1,), (1, 2, 2), (2,), (), (2, 2)]
阅读全文
0 0
- [LeetCode]90.Subsets II
- [Leetcode] 90. Subsets II
- LeetCode --- 90. Subsets II
- [leetcode] 90.Subsets II
- 【leetcode】90. Subsets II
- Leetcode 90. Subsets II
- 90. Subsets II LeetCode
- leetcode 90. Subsets II
- Leetcode 90. Subsets II
- LeetCode *** 90. Subsets II
- LeetCode 90. Subsets II
- leetcode 90. Subsets II
- leetcode 90. Subsets II
- [LeetCode] 90. Subsets II
- [leetcode] 90. Subsets II
- [leetcode]90. Subsets II
- Leetcode-90. Subsets II
- [LeetCode]90. Subsets II
- JavaScript数组最新练习
- 第十期 使用 Keras 和 Flask 构建一个在线 API 《显卡就是开发板》
- 将idea中的本地项目上传到码云
- android fragment动态显示隐藏
- Spark配置log4j日志输出
- leetcode: 90. Subsets II
- 如何修改intellij idea的Maven全局设置
- Android的设计模式-建造者模式
- ES terms 支持量的修改
- win10下面eclipse的Ctrl+shift+F的快捷键
- 检查mysql锁状态
- 2017上海国际营养健康产业展览会 2017上海国际有机食品和绿色食品博览会 2017上海国际休闲食品及进口食品博览会会刊(参展商名录)
- 【LeetCode】599.Minimum Index Sum of Two Lists(Easy)解题报告
- KieSession缓存调用