您的位置:首页 > 其它

[LeetCode] Subsets II

2014-08-12 22:43 344 查看
Given a collection of integers that might contain duplicates, S, return all possible subsets.

Note:

Elements in a subset must be in non-descending order.

The solution set must not contain duplicate subsets.

For example, If S =
[1,2,2]
, a solution is:

[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]


class Solution {
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
int len = S.size();
vector<int> temp,tempIndex;
vector<vector<int> > res,resIndex;
res.push_back(temp);
resIndex.push_back(tempIndex);
if(len<=0)
return res;
queue<vector<int> > q,qIndex;//bfs

q.push(temp);
qIndex.push(tempIndex);
while(!q.empty()){
temp = q.front();
tempIndex = qIndex.front();
qIndex.pop();
q.pop();
vector<int> temp0 =temp;
vector<int>  tempIndex0 = tempIndex;
for(int i=0;i<len;i++){
if(find(tempIndex.begin(),tempIndex.end(),i)==tempIndex.end()){
tempIndex.push_back(i);
temp.push_back(S[i]);
sort(temp.begin(),temp.end());
if(find(res.begin(),res.end(),temp)==res.end()){
res.push_back(temp);
resIndex.push_back(tempIndex);
q.push(temp);
qIndex.push(tempIndex);
}
tempIndex = tempIndex0;
temp = temp0;
}
}//end for
}//end while
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: