题解 | #有重复项数字的全排列#
有重复项数字的全排列
http://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863
##先给出全部结果,而后对结果进行排序,去重。
class Solution { public: void getOrder(vector<vector >&res,vector&num,int index){
if(index==num.size()-1){
res.push_back(num);
}else{
for(int i=index;i<num.size();i++){
swap(num[i],num[index]);
getOrder(res,num,index+1);
swap(num[i],num[index]);
}
}
}
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(),num.end());
vector<vector<int> >res;
getOrder(res,num,0);
sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;
}
};