zoukankan      html  css  js  c++  java
  • 【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 };
     
  • 相关阅读:
    C# 实现类库并调用
    C# pictureBox.Image获得图片的三种方法
    C# 指针使用总结
    C++ 怎样让函数返回数组
    C# 枚举与位枚举(Enum)
    Labview调用C#动态链接库dll
    C# partial 作用
    C# Internal关键字小结
    C# => 运算符
    C# 中 ??、 ?、 ?: 、?.、?[ ]
  • 原文地址:https://www.cnblogs.com/reachteam/p/4215212.html
Copyright © 2011-2022 走看看