90. Subsets II Leetcode Python
来源:互联网 发布:四小票采集软件 编辑:程序博客网 时间:2024/05/29 11:31
Given a collection of integers that might contain duplicates, S, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
For example,
If S = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
算法NP hard T(n) = n * T(n-1)
这道题目的解法和大部分的求combination和subset的方法一样,在递归中加一个循环逐次加入新的元素。
这道题目看似O(n^2)起始不然,随着数组的增大子集的数量是factorial 增长的。
This problem can be solve with adding one iteration in recursion. and append the subsets to the solution list. The time complexity is NP hard, because the number of sub array is factorial related with the size of the array.
class Solution: # @param num, a list of integer # @return a list of lists of integer def bfs(self,valuelist,solution,S,start): if valuelist not in solution and len(valuelist)<=len(S): solution.append(valuelist) for index in range(start,len(S)): valuelist=valuelist+[S[index]] self.bfs(valuelist,solution,S,index+1) valuelist=valuelist[:len(valuelist)-1] def subsetsWithDup(self, S): solution=[] if len(S)==0: return solution S.sort() self.bfs([],solution,S,0) return solution
Simplified version
class Solution: # @param num, a list of integer # @return a list of lists of integer # a dfs problem def dfs(self, res, val, num, start): if val not in res: res.append(val) for i in range(start, len(num)): self.dfs(res, val+[num[i]], num, i+1) def subsetsWithDup(self, S): res = [] if len(S) == 0: return res S.sort() val = [] self.dfs(res, val, S, 0) return res
0 0
- 90. Subsets II Leetcode Python
- 【Leetcode】【python】Subsets/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
- 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
- Find subarray with given sum
- Linux(Ubuntu) 安装mysql,windows使用Navicat 连接
- 关于Mac的快捷操作
- Gray Code Leetcode Python
- 怎样在软件中使用apache license
- 90. Subsets II Leetcode Python
- [LeetCode] Determine if two rectangles overlap
- Ruby Notes
- 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- knockout.js
- Fragment学习
- 32位汇编语言学习笔记(42)--测试时间相关函数
- HDU2071 Max Num【水题】