zoukankan      html  css  js  c++  java
  • [LeetCode] Permutation Sequence

    The set [1,2,3,…,n] contains a total of n! unique permutations.

    By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3):

    1. "123"
    2. "132"
    3. "213"
    4. "231"
    5. "312"
    6. "321"

    Given n and k, return the kth permutation sequence.

    Note: Given n will be between 1 and 9 inclusive.

    class Solution {
    public:
        string getPermutation(int n, int k) {
            string res;
            func(res,n,k);
            return res;
        }
    private:
        void func(string &res,int n,int k){ //n表示几位数
            if(n==0)
                return;
            int weight = f(n-1);
            char cur = '1';
           
            int num = (k-1)/weight + 1;
            while( find(res.begin(),res.end(),cur)==res.end() || num!=0){
                 if(find(res.begin(),res.end(),cur)==res.end())
                   num--;
                  if( num != 0) 
                    cur += 1;
                  else
                      break;
            }
             k %= weight;
            if(k==0)
                k = weight; 
            res.push_back(cur);            
            func(res,n-1,k);
        }
    
        int f(int n){
           
           if(n == 1 || n==0)
               return 1;
           else
              return n*f(n-1);
        
        }
    };
  • 相关阅读:
    RK3399之时钟
    C之{}注意点
    ARM之不用段寄存猜想
    linux驱动之入口
    android之HAL
    git
    消息中间之ActiveMQ
    Maven之阿里云镜像仓库配置
    清理Oracle临时表空间
    Tomcat控制台日志输出到本地文件
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3920657.html
Copyright © 2011-2022 走看看