您的位置:首页 > 其它

Leetcode--Permutations II

2014-10-13 11:23 295 查看
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]
.

思路:在Permutations的解法上,处理重复问题。

class Solution {
public:
set<vector<int>> res;
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void function(vector<int>&num,int i)
{
if(i==num.size()-1)
{
res.insert(num);
}
else{
for(int j=i;j<num.size();j++)
{
if(j==i)
function(num,i+1);
else if(j>i&&num[j]!=num[i]){
swap(&num[i],&num[j]);
function(num,i+1);
swap(&num[i],&num[j]);
}
}
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
if(num.size()>0)
function(num,0);
vector<vector<int>> result(res.begin(),res.end());
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: