Permutations II
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 {
public:
vector<vector<int> > permuteUnique(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > result;
sort(num.begin(),num.end());
bool flag;
do{
flag=false;
result.push_back(num);
for(int i=num.size()-1;i>0;--i){
if(num[i]<=num[i-1])
continue;
flag=true;
for(int j=num.size()-1;j>0;--j){
if(num[j]<=num[i-1])
continue;
swap(num[i-1],num[j]);
reverse(num.begin()+i,num.end());
break;
}
break;
}
}while(flag);
return result;
}
};