Subsets II

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

C++代码实现:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

class Solution
{
public:
    vector<vector<int> > subsetsWithDup(vector<int> &S)
    {
        if(S.empty())
            return vector<vector<int>>();
        sort(S.begin(),S.end());
        int n=1<<S.size();
        int i=0;
        vector<vector<int> > ret;
        while(i<n)
        {
            vector<int> temp;
            int index=0;
            int j=i;
            while(j>0)
            {
                if(j&1)
                    temp.push_back(S[index]);
                j=j>>1;
                index++;
            }
            int k;
            for(k=0;k<(int)ret.size();k++)
            {
                if(ret[k]==temp)
                    break;
            }
            if(k==(int)ret.size())
                ret.push_back(temp);
            i++;
        }
        return ret;
    }
};

int main()
{
    Solution s;
    vector<int> vec= {2,1,2};
    vector<vector<int> > result=s.subsetsWithDup(vec);
    for(auto a:result)
    {
        for(auto v:a)
            cout<<v<<" ";
        cout<<endl;
    }
}

 

方法二:

class Solution {
public:
    vector<vector<int> > subsetsWithDup(vector<int> &S) {
        if(S.empty())
            return vector<vector<int> > ();
        sort(S.begin(),S.end());
        vector<vector<int> > res={{}};
        vector<vector<int> > last;
        vector<vector<int> > tmp;
        int i,j;
        int n=S.size();
        int m=res.size();
        for(i=0;i<n;i++)
        {
            if(i>0&&S[i]==S[i-1])
            {
                m=last.size();
                tmp=last;
            }
            else
            {
                m=res.size();
                tmp=res;
            }
            last.clear();
            for(j=0;j<m;j++)
            {
                tmp[j].push_back(S[i]);
                last.push_back(tmp[j]);
                res.push_back(tmp[j]);
            }
        }
        return res;
    }
};

https://leetcode.com/discuss/25834/share-a-clear-solution

时间: 2024-10-26 14:15:33

Subsets II的相关文章

[LeetCode]90.Subsets II

题目 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

UVa 496 Simply Subsets (STL&amp;amp;set_intersection)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=437 先介绍<algorithm>头文件中与集合运算有关的4个函数: 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 很明显,这里要判断两个集合的关

leetcode难度及面试频率

转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Characters 3 2 string Two Pointers      

LeetCode总结【转】

转自:http://blog.csdn.net/lanxu_yy/article/details/17848219 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近完成了www.leetcode.com的online judge中151道算法题目.除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者数据结构,因此做了如下小结,具体的解题思路可以搜索我的博客:LeetCode题解 题目 算法 数据结构 注意事项 Clone Graph BFS 哈希表 Word Ladder II

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

绘影II与Photoshop焕彩黑白照片

鼠标的出现,大大的改进了电脑的操作方式,但发展至今天,因为时代的进步,它的能力始终有限.作为一个艺术创作者.平面或动画的设计师,如果只使用一个鼠标作绘图,可谓是一件痛苦的事情,即使拥有精湛的鼠标操作技巧,精准的点击能力,也比不上用笔在画板上挥毫那么直观!所以,拥有一个功能强大和灵活多变的创意软件和工具可以使你的设计工作事半功倍,Adobe Photoshop CS和UGEE绘影II代绘图板就是这样一对创意绝配,它具备1024级的压感和200点/秒的绘画识别功能,能帮助你自由地发挥创意空间.在UG

学习网页制作:像table一样布局div II

网页 像table一样布局div Ⅰ 下面是我翻译的内容,是根据我对文章的理解意译的,你就别挑哪里翻译的不对了,我的目的只是传达这个CSS技巧 上一篇的问题就是,这个模型对IE来说等同于垃圾,所以基本只能是做来玩玩而已,没有什么实际的用处,现在我要做的就是,让它也能在IE下更好的显示,所以我又做了第二个模型 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/

测试Trackback II

修改上一篇文章后,在修改时添加的链接似乎并没有被.Text分析和自动尝试Trackback.另个,我两个朋友的Blog没有被Ping到,可能是Trackback URL不同于BLOG URL的缘故.再尝试一次: Ryana,再试你的Spider-Man II. 其他人也在测试Trackback.

JSP 构架-2种方式:Model I和Model II

js|model 作者:Lance Lavandowska 编译:blueski 如果你经常去Servlet或JSP的新闻组或者邮件列表,那么一定会看到不少关于Model I 和Model II 方法的讨论.究竟采用哪一种,这取决于你的个人喜好.团队工作策略以及是否采用正统的OOP. 简单地说,Model I将事务逻辑(business logic)和表示代码(presentation code)融合在一起(如在HTML中):Model II则提倡最大限度地将所有的代码放到内容表示之外. Mod