zoukankan      html  css  js  c++  java
  • 全排列Ⅱ

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

    示例:

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

    class Solution {
    public:
        vector<vector<int>>res;// 保存所有情况
        vector<vector<int>>permuteUnique(vector<int>& nums) {
            vector<bool> nums1(nums.size(),true);
            vector<int>current;//当前保存的结果
            vector<int>used;
            trace_back(nums,current,nums1,used);
            return res;
        }
        void trace_back(const vector<int>& nums,vector<int> &current,vector<bool>&num_flag,vector<int>&used)
        {
            //判断是否已经生成一个结果
             if(current.size()==nums.size())
             {
                 res.push_back(current);//保存在结果中
                 return;
             }
             else
             {
                 for(int i=0;i<nums.size();i++)
                 {
                     auto it=find(used.begin(), used.end(), nums[i]);
                     if(num_flag[i]&&it==used.end())//判断节点有咩有使用过
                     {   
                         used.push_back(nums[i]);//把使用过得节点放入,用作重复判断
                         current.push_back(nums[i]);
                         num_flag[i]=false;//使用过该节点  所以判断为false
                         vector<int>use;//到子节点得时候重新建立 相关重复判断use
                         trace_back(nums,current,num_flag,use);//开始往子节点走
                         //恢复状态
                         current.pop_back();
                         num_flag[i]=true;
                     }
                 }
             }
        }
    };
    

      

  • 相关阅读:
    S3C2440实现dm9000网卡驱动程序移植
    IMX257虚拟网卡vnet驱动程序
    ram_flash驱动
    S3C2440 nor_flash驱动程序
    Java 打印* 三角形
    Java系列学习说明
    java案例1,打印hello java
    zabbixproxy安装
    python鉴黄程序
    mssql发布订阅事项
  • 原文地址:https://www.cnblogs.com/wjx-zjut/p/13501965.html
Copyright © 2011-2022 走看看