zoukankan      html  css  js  c++  java
  • 90.Subsets II

    class Solution {
    public:
        vector<vector<int>> subsetsWithDup(vector<int> &S) {
            if (S.empty()) return {};
            vector<vector<int>> res(1);
            sort(S.begin(), S.end());
            int size = 1, last = S[0];
            for (int i = 0; i < S.size(); ++i) {
                if (last != S[i]) {
                    last = S[i];
                    size = res.size();
                }
                int newSize = res.size();
                for (int j = newSize - size; j < newSize; ++j) {
                    res.push_back(res[j]);
                    res.back().push_back(S[i]);
                }
            }
            return res;
        }
    };
    
    class Solution {
    public:
        vector<vector<int>> subsetsWithDup(vector<int> &S) {
            if (S.empty()) return {};
            vector<vector<int>> res;
            vector<int> out;
            sort(S.begin(), S.end());
            getSubsets(S, 0, out, res);
            return res;
        }
        void getSubsets(vector<int> &S, int pos, vector<int> &out, vector<vector<int>> &res) {
            res.push_back(out);
            for (int i = pos; i < S.size(); ++i) {
                out.push_back(S[i]);
                getSubsets(S, i + 1, out, res);
                out.pop_back();
                while (i + 1 < S.size() && S[i] == S[i + 1]) ++i;
            }
        }
    };
    
  • 相关阅读:
    LeetCode-195
    中文屋子与图灵测试谁对?
    leedcode-122
    Java 网络编程
    Java File类与IO流
    Java 异常
    Java 多线程
    Java Collection集合
    Java 常用API (第二部分)
    Java 日期时间与unix时间戳之间转换
  • 原文地址:https://www.cnblogs.com/smallredness/p/10676110.html
Copyright © 2011-2022 走看看