首页 > 代码库 > 【leetcode】Permutations II
【leetcode】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]
.
先排序,如果一个元素与上一个元素相等,且前面没有使用该元素,则该元素不参与当前排列
1 class Solution { 2 public: 3 vector<vector<int> > permuteUnique(vector<int> &num) { 4 5 sort(num.begin(),num.end()); 6 vector<vector<int> > result; 7 vector<int> tmp; 8 vector<bool> visited(num.size()); 9 dfs(0,num,result,visited,tmp);10 return result;11 12 }13 14 15 void dfs(int level,vector<int> &num,vector<vector<int> > &result,vector<bool> &visited,vector<int> &tmp)16 {17 if(level==num.size())18 {19 result.push_back(tmp);20 return;21 }22 23 for(int i=0;i<num.size();i++)24 {25 if(!visited[i])26 {27 if(i>=1&&((num[i]==num[i-1]&&visited[i-1])||(num[i]!=num[i-1]))||i==0)28 {29 visited[i]=true;30 tmp.push_back(num[i]);31 dfs(level+1,num,result,visited,tmp);32 tmp.pop_back();33 visited[i]=false;34 }35 }36 }37 }38 39 };
【leetcode】Permutations II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。