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++中static的使用
    sublime3 ctl+b无效
    Maximum Subarray
    Find the Duplicate Number
    Reverse Linked List
    c++ primer 2 变量和基本类型
    Single Number II
    Roman to Integer & Integer to Roman
    Search Insert Position
    Unique Binary Search Trees II
  • 原文地址:https://www.cnblogs.com/reachteam/p/4215212.html
Copyright © 2011-2022 走看看