您的位置:首页 > 其它

LeetCode Permutations II

2012-11-24 00:52 393 查看
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]
.

Solution:

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: