题目来源


https://leetcode.com/problems/subsets-ii/

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.

题意分析


Input:

:type nums: List[int]

Output:

   :rtype: List[List[int]]

Conditions:返回一个list的所有子集,注意list中的元素可以是重复的,但是要求返回的子集不重复,子集中的元素顺序为非降序。


题目思路


用dfs,同78题,只是在增加一个子集的时候,判断是否已经存在这个子集再增加。

附注:在扩展子集的时候,可以采用不断增加一个元素,并且先对list进行排序,每次增加时只遍历当前位置之后的元素,这样就可以避免重复。


AC代码(Python)


 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, [])
return res

最新文章

  1. 模拟实现SQL Server中的datepart(week,date)的功能
  2. 20-ES6(3)class基本语法
  3. xpath实例 --//span[contains(.,'资讯管理')]
  4. Laravel5.1-错误和日志
  5. Git平台使用时的配置分析
  6. (Builder)创建者模式
  7. R12月末关帐的异常检查和处理
  8. Django基础篇之数据库选择及相关操作
  9. js 操作cookie
  10. 用TIMESTAMP类型取代INT和DATETIME
  11. [leetcode-594-Longest Harmonious Subsequence]
  12. servlet之注册登录(简写)
  13. URLconnection
  14. 动态创建VIEW
  15. sql语句的一些案列!
  16. Torch功能点记录
  17. eclipese的一些卡顿问题
  18. 应用TortoiseGit为github账号添加SSH keys,解决pull总是提示输入密码的问题
  19. 获取屏幕宽度,将view移出屏幕再移动回来
  20. 百度「Web 前端研发部」面试过程和常见问题 可能会采用哪些方法来面试 STAR 面试法 喜欢什么样的面试者 喜欢问的问题

热门文章

  1. 各新旧版本Java及其相关文档可以从这里下载
  2. UOJ#77. A+B Problem
  3. 一个简单的SqlServer游标使用
  4. TV测试中的按键长按操作模拟
  5. winform学习2-datagridview数据绑定
  6. html5调用手机摄像头,实现拍照上传功能
  7. iOS开发之正则表达式
  8. excel表中内容如何反排列
  9. [转]Multiple outputs from T4 made easy
  10. HDU 1043 & POJ 1077 Eight(康托展开+BFS+预处理)