题目如下:
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) {
vector<vector <int>> res(1);
sort(S.begin(),S.end());
int last = S[0],real_num=res.size();
for(vector<int>::iterator itr=S.begin();itr!=S.end();itr++)
{
if(*itr!=last)
{
last=*itr;
real_num=res.size();
}
int size = res.size();
for(int i=size-1;i>=size-real_num;i--)
{
res.push_back(res[i]);
res.back().push_back(*itr);
}
}
return res;
}
};