首页 > 代码库 > Permutations II 去掉重复的全排列
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]
.
Hide Tags
Backtrackingclass Solution {private: vector<vector<int> > ret;public: void perm(vector<int> &num,int i,int len){ if(i==len){ ret.push_back(num); return; } for(int j=i;j<len;++j){ if(!isSwap(num,i,j)) continue; swap(num[i],num[j]); perm(num,i+1,len); swap(num[j],num[i]); } } bool isSwap(vector<int>& num, int i, int j) { while (num[i] != num[j] && i < j) i++; if (i == j) return true; else return false; } vector<vector<int> > permuteUnique(vector<int> &num) { int len=num.size(); ret.clear(); sort(num.begin(), num.end()); perm(num,0,len); return ret; }};
参考http://blog.csdn.net/morewindows/article/details/7370155
Permutations II 去掉重复的全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。