【leetcode题解】【回溯】【54】【M】Subsets II
2015-12-15 20:01
483 查看
Given a collection of integers that might contain duplicates, nums, 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 nums =
Subscribe to see which companies asked this question
方法一,跳过相同元素(不能用if,得用while,总忘)
方法二,跟subset一样,添加结果的时候判断,是否重复
Note:
Elements in a subset must be in non-descending order.
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], [] ]
Subscribe to see which companies asked this question
方法一,跳过相同元素(不能用if,得用while,总忘)
方法二,跟subset一样,添加结果的时候判断,是否重复
class Solution(object): def bt(self,nums,temp,start,l,res): #print start,l,temp if len(temp) > l: return if len(temp) == l:# and temp not in res: #print 'added' res.append(temp[:]) return i = start while i <len(nums): #temp.append(nums[i]) self.bt(nums,temp+[nums[i]],i+1,l,res) while i<len(nums)-1 and nums[i] == nums[i+1]: i+=1 continue i += 1 #temp.pop(-1) def subsetsWithDup(self, nums): nums.sort() res = [] for i in range(0,len(nums)+1): self.bt(nums,[],0,i,res) return res ''' class Solution(object): def bt(self,nums,temp,start,l,res): #print start,l,temp if len(temp) > l: return if len(temp) == l and temp not in res: res.append(temp[:]) #return for i in range(start,len(nums)): #temp.append(nums[i]) self.bt(nums,temp+[nums[i]],i+1,l,res) #最开始i+1 写成了 start+1,那肯定是错了啊!! #temp.pop(-1) def subsetsWithDup(self, nums): res = [] nums.sort() for i in range(0,len(nums)+1): #print '______' self.bt(nums,[],0,i,res) return res '''
相关文章推荐
- iOS 登录功能的实现
- 对象持久话与pickle模块
- 07 java main方法
- Spring学习笔记<一>
- python基础教程共60课-第43课查天气1
- ActivityUnitTestCase示例
- Linux内存寻址
- 插入排序(直接插入排序和希尔(shell)排序
- ViewFlipper简单学习笔记
- hdoj1280前m大的数
- Java设计模式之策略模式
- UCOSIII 任务管理(中)
- 缓存算法(页面置换算法)-FIFO、LFU、LRU
- 第十周项目3 利用二叉树遍历思想解决问题
- 《spring技术内幕》学习(二)ioc容器实现
- cocos2d-x从c++文件生成lua绑定文件及lua脚本文件
- spring-session源码解读-5
- 将汉字转化为拼音
- 求右边区间的最大值
- Spring AOP实现方式