美文网首页
90. Subsets II

90. Subsets II

作者: jecyhw | 来源:发表于2019-06-05 12:58 被阅读0次

    题目链接

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

    思路

    对于第i个数,要么选和不选,不选就是前i-1个数的结果,选就是在前i-1个数的基础上加上第i个数,如果第i个数和第i-1个数相等,只需要考虑第i-1个数加入过集合的那部分子集。

    代码

    class Solution {
    public:
        vector<vector<int>> subsetsWithDup(vector<int>& nums) {
            vector<vector<int>> ans;
            sort(nums.begin(), nums.end());
    
            vector<int> t;
            ans.push_back(t);
            int pos = 0, st = 0;
            for (int i = 0; i < nums.size(); ++i) {
                if ( i != 0 && nums[i] == nums[i - 1]) {
                    st = pos;
                } else {
                    st = 0;
                }
                pos = ans.size();
                int ed = ans.size();
                for (; st < ed; ++st) {
                    t = ans[st];
                    t.push_back(nums[i]);
                    ans.push_back(t);
                }
            }
            return ans;
        }
        
    };
    

    相关文章

      网友评论

          本文标题:90. Subsets II

          本文链接:https://www.haomeiwen.com/subject/tvijxctx.html