码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】Permutations II

时间:2015-01-10 17:51:39      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/reachteam/p/4215212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!