leetcode子集II bug?

时间:2015-12-02 04:10:07

标签: c++ subset

处理子集II(找到可能重复的数字集合的子集)。我的代码

class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& S) {
    sort(S.begin(),S.end());
    vector<vector<int>> allSets;
    vector<int> sol;
    allSets.push_back(sol);
    int c=0;
    S.push_back(S[S.size()]+1);
    for (int i=0;i<S.size()-1;i++){
        if (S[i]==S[i+1]) {
            ++c;
            continue;
        } 
        int n=allSets.size();
        if (c>0){
        for (int j=0;j<n;j++){
            sol=allSets[j];
            for (int k=0;k<c+1;k++){
                sol.push_back(S[i]);
                allSets.push_back(sol);
            }
        }
        c=0;
        } else {
            for (int j=0;j<n;j++){
            sol=allSets[j];
            sol.push_back(S[i]);
            allSets.push_back(sol);
        }
        c=0;
        }

    }

    return allSets;
}

};

当测试用例为[1,1]时,它返回[[]],而不是[[],[1],[1,1]]。我的臭虫在哪里?

1 个答案:

答案 0 :(得分:0)

结果 S.push_back(S [S.size()] + 1); 应该是S.push_back(S [S.size() - 1] +1);