题目描述
给出一组可能包含重复项的数字,返回该组数字的所有排列。
示例1
输入
[1,1,2]
返回值
[[1,1,2],[1,2,1],[2,1,1]]
class Solution {
public:
void permute(vector<vector<int>> &res, vector<int> num, int index,int n){
if(index==n-1){
res.push_back(num);
return;
}
for(int i=index;i<n;i++){
if(i==index || (i!=index && num[i]!=num[index])){
swap(num[index],num[i]);
permute(res, num, index+1, n);
//swap(num[index],num[i]);
}
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(), num.end());
vector<vector<int>> res;
permute(res, num, 0, num.size());
return res;
}
};