zoukankan      html  css  js  c++  java
  • leetcode——60.第K个排列

    public String getPermutation(int n, int k) {
            //itemlist 为原始顺序数列
            List<Integer> itemList = new ArrayList<>();
            if(n==1){
                return "1";
            }
            //阶乘数据
            List<Integer> nList = new ArrayList<>();
            nList.add(1);
            for(int i=1;i<=n;i++){
                itemList.add(i);
                if(i>=2){
                    //计算阶乘值 N! = n* (N-1)!
                    int nData = nList.get(i-2);
                    nList.add(i*nData);
                }
            }
    
            if(k > nList.get(nList.size()-1)){
                return "";
            }
    
            int index = n-1;
    
            k = k-1;
    
            StringBuilder itemStr = new StringBuilder();
    
            while(index>=0){
                if(index ==0){
                    itemStr.append(itemList.get(0));
                    break;
                }
                //获取N-1的阶乘值
                int result = nList.get(index-1);
                //获得当前熏循环的第一个数字的索引
                int firstIndex = k/result;
                //获取当前第一个数字
                int firstNum = itemList.get(firstIndex);
                itemStr.append(firstNum);
                itemList.remove(firstIndex);
                index = index -1;
                k = k%result;
            }
            return itemStr.toString();
        }

    ——2020.7.10

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    1JavaScript的历史
    扯扯 require .js
    查看js 执行效率工具
    php 输入输出流
    词法分析096
    Python基础综合练习
    096
    大数据概述
    熟悉常用的Linux操作
    实验一、词法分析实验
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13277711.html
Copyright © 2011-2022 走看看