zoukankan      html  css  js  c++  java
  • 47.全排列 2

    给定一个可包含重复数字的序列,返回所有不重复的全排列。

    示例:

    输入: [1,1,2]
    输出:
    [
    [1,1,2],
    [1,2,1],
    [2,1,1]
    ]

    这里比全排列1多一行,剪枝。

    class Solution {
    public:
        vector<vector<int>> permuteUnique(vector<int>& nums) {
      //     set<vector<int>> va;
           vector<int> trace;
            vector<vector<int>> va1;
            vector<int> visited(nums.size(),0);
           permuteUnique(va1,trace,nums,visited);
          
       
           return va1; 
        }
        void permuteUnique(vector<vector<int>> &va,vector<int> &trace,vector<int> &nums,vector<int> &visited)
        {
            if(nums.size()==trace.size())
            {
                va.push_back(trace);
            }
            for(int i=0;i<nums.size();i++)
            {
                if(visited[i]==1) continue;
                if (i > 0 && nums[i] == nums[i - 1] && visited[i - 1] == 0) continue;
                visited[i]=1;
                trace.push_back(nums[i]);
                permuteUnique(va,trace,nums,visited);
                trace.pop_back();
                visited[i]=0;
            }
        }
    };
  • 相关阅读:
    【概念】构造函数和析构函数
    【概念】使用Fixed创建固定大小的缓冲区
    Sqoop
    Flume组件
    Hive节点及原理
    Yarn
    Hive数据倾斜
    单例
    工厂设计模式
    JVM对象创建
  • 原文地址:https://www.cnblogs.com/buzhidao1/p/12709729.html
Copyright © 2011-2022 走看看