zoukankan      html  css  js  c++  java
  • LeetCode OJ--Subsets II

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

    求一个集合的子集,但集合中有重复元素。

    求子集的问题,对应着数的二进制,相当于对二进制的一个遍历。

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    class Solution {
    public:
        vector<vector<int> > subsetsWithDup(vector<int> &S) {
            vector<vector<int> > ans;
            if(S.size()==0)
                return ans;
            int num = pow(2,S.size());
            sort(S.begin(),S.end());
            for(int i = 0; i<num; i++)
            {
                vector<int> ansPiece;
                ansPiece = oneSubsetPiece(i,S);
                bool flag = 1;
                for(int j = 1; j<ans.size(); j++)
                {
                    if(ansPiece == ans[j]) flag = 0;
                }
                if(flag == 1)
                    ans.push_back(ansPiece);
            }
            return ans;
        }
        //find the num's binary
        vector<int> oneSubsetPiece(int num,vector<int> &S)
        {
            vector<int> ansPiece;
            int YuShu;
            int ChuShu;
            int index = 0;
            while(num)
            {
                YuShu = num %2;
                num = num/2;
                if(YuShu)
                    ansPiece.push_back(S[index]);
                index++;
            }
            return ansPiece;
        }
    };
    
    int main()
    {
        class Solution sol;
        vector<int> num;
        num.push_back(1);
        num.push_back(2);
        num.push_back(2);
        sol.subsetsWithDup(num);
    }
  • 相关阅读:
    java web 自定义的权限框架
    java web 中 读取windows图标并显示
    apache httpclient
    Gson json解析工具
    org.apache.commons
    ehcache 缓存管理工具
    springmvc集成Freemarke配置的几点
    SaltStack与ZeroMQ(二)
    Python中的__init__和__new__介绍
    TCP 介绍
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3787918.html
Copyright © 2011-2022 走看看