处理子集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]]。我的臭虫在哪里?
答案 0 :(得分:0)
结果 S.push_back(S [S.size()] + 1); 应该是S.push_back(S [S.size() - 1] +1);