题目:
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2]have the following unique permutations:
[1,1,2],[1,2,1], and[2,1,1].
程序:
class Solution {
vector<vector<int>> res;
public:
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(),num.end());
solve(num,0);
sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;
}
void solve(vector<int>& num,int step){
if(step==num.size()){
res.push_back(num);
return;
}
for(int i=step;i<num.size();++i){
swap(num[step],num[i]);
solve(num,step+1);
swap(num[step],num[i]);
}
}
};