您的位置:首页 > 其它

[leetcode] Permutations II

2013-08-10 18:29 351 查看
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> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
set<vector<int> >ret;
int n=num.size();
_permute(num,n,n-1,ret);
return vector<vector<int> >(ret.begin(),ret.end());
}
void _permute(vector<int>& array,int n,int depth,vector<vector<int> >&ret){
if(depth==0){
ret.insert(array);
return;
}
for(int i=0 ; i<=depth ; i++){
swap(array[i],array[depth]);
_permute(array,n,depth-1,ret);
swap(array[i],array[depth]);
}
return;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: