一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github

欢迎大家关注我的新浪微博,我的新浪微博

欢迎转载,转载请注明出处

(一)题目

Given a collection of integers that might contain duplicates, nums, return all possible subsets.

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],

 []

]

(二)解题

题目大意:求给定数集中所有子集,注意数集中有重复的数字。

可以参考:【一天一道LeetCode】#78. Subsets,但是按照78题中的解法再最后去重的话就显得有些麻烦,于是采用回溯法在过程中去重。

class Solution {
public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        vector<int> temp;
        vector<vector<int>> ret;
        int last;
        sort(nums.begin(),nums.end());//首先需要排序,便于在过程中去重
        dfsSubset(ret,nums,temp,0,last);
        return ret;
    }
    void dfsSubset(vector<vector<int>>&ret  , vector<int>& nums , vector<int>& temp , int i ,int& last)
    {
        ret.push_back(temp);
        for(int j = i ; j < nums.size() ; j++)
        {
            if(last == nums[j]) continue;//记录上一次push进去的数,如果相同,就代表重复了,需要去除
            temp.push_back(nums[j]);
            dfsSubset(ret,nums,temp,j+1,last);
            last = nums[j];//每次记录push进去的数
            temp.pop_back();//回溯到上一次的结果
        }
    }
};

【一天一道LeetCode】#90. Subsets II的更多相关文章

  1. [LeetCode] 90.Subsets II tag: backtracking

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...

  2. [leetcode]90. Subsets II数组子集(有重)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...

  3. [LeetCode] 90. Subsets II 子集合 II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...

  4. LeetCode 90. Subsets II (子集合之二)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  5. leetCode 90.Subsets II(子集II) 解题思路和方法

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  6. [LeetCode] 90. Subsets II 子集合之二

    Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: ...

  7. Leetcode#90 Subsets II

    原题地址 跟Subsets(参见这篇文章)类似. 但因为有重复元素,所以要考虑去重问题. 什么情况下会出现重复呢?比如S = {5, 5, 5},如果要选1个5,一共有C(3,1)=3种选法,即100 ...

  8. leetcode 78. Subsets 、90. Subsets II

    第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值. level代表的是需要进行选择的数值的位置. 78. Subsets 错误解法: cl ...

  9. LeetCode Problem 90. Subsets II

    python solution 123456789101112131415161718192021222324252627 class (object): def subsetsWithDup(sel ...

随机推荐

  1. 模块机制 之commonJs、node模块 、AMD、CMD

    在其他高级语言中,都有模块中这个概念,比如java的类文件,PHP有include何require机制,JS一开始就没有模块这个概念,起初,js通过<script>标签引入代码的方式显得杂 ...

  2. 移动端web开发中对点透的处理,以及理解fastclick如何做到去除300ms延迟

     一.点透问题以及处理办法 开发中遇到一个问题,就是点击layer弹出框的取消按钮之后,按钮下方的click事件就直接触发了.直接看代码: $('.swiper-slide').on('click', ...

  3. HTML标签部分(块级/行级)

    一.基本块级标签 1.HTML标签的分类:      a.块级标签:显示为块状,独占一行,自动换行.      b.行级标签:在一行中,从左往右依次排列,不会自动换行. 2.h标签(标题标签) h标签 ...

  4. C# get 、set、索引器

    get 与 set C#类的属性有公有属性(public)和私有属性(private).如果直接将一个属性声明为public,则该类的任意实例可以随意获取或修改该属性的值,很不安全..NET Fram ...

  5. 吐槽:【计算机网络与通信】.张元.高清文字版.pdf

    看了这本书的pdf,发现了一处错误,瞬间就不想再看了.新下载了谢希仁老师的<计算机网络>.

  6. pycharm 安装与基本设置

    一.下载及安装 打开官网下载:https://www.jetbrains.com/pycharm/download/#section=windows 下载完毕之后可直接双击可执行文件,然后点击&quo ...

  7. Docker 备份、恢复、迁移数据卷

    可以利用数据卷对其中的数据进行进行备份.恢复和迁移. 备份 首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录. ...

  8. Programming In Scala笔记-第十一章、Scala中的类继承关系

    本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...

  9. ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306

    ANT不完全总结   好久没有用Ant了,最近让MyEclipse.JBuilder2008逼的重回Ant上了.手生了,写了一个脚本后,重新总结下.参考了官方的文档和网上一些资料.   一.ANT的介 ...

  10. SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决

    一个SpriteKit项目在其他设备上运行都无问题(无论是真机或是模拟器),但是在iPhone6 Plus上会出现精灵对象纹理被过度放大的现象: 从上图中大家可以看到无论是主角或是道具球都过大了. 看 ...