zoukankan      html  css  js  c++  java
  • PermutationSequence,求第k个全排列

    问题描述:给定一个数组,数组里面元素不重复,求第k个全排列。

    算法分析:这道题就是用到取商取模运算。

     1 public String getPermutation(int n, int k) {
     2          
     3         // initialize all numbers
     4         ArrayList<Integer> numberList = new ArrayList<Integer>();
     5         for (int i = 1; i <= n; i++) {
     6             numberList.add(i);
     7         }
     8  
     9         //第k个,按下标算是第k-1个
    10         k--;
    11  
    12         int mod = 1;
    13         for (int i = 1; i <= n; i++) {//mod = n!
    14             mod = mod * i;
    15         }
    16  
    17         String result = "";
    18  
    19         for (int i = 0; i < n; i++) {
    20             mod = mod / (n - i);//第一个元素后面有(n-1)!种组合,剩下的依次迭代
    21             int curIndex = k / mod;//第一个元素的下标,剩下的依次迭代
    22             // update k
    23             k = k % mod;
    24  
    25             // get number according to curIndex
    26             result += numberList.get(curIndex);
    27             // remove from list        ..
    28             numberList.remove(curIndex);
    29         }
    30  
    31         return result.toString();
    32     }
  • 相关阅读:
    linux压缩与解压
    simple 单例
    模板字符串
    变量的解构赋值
    let和const关键字
    React的基本认识
    Docker安装Nginx
    jenkins创建工程
    Jenkins系统初始化配置
    在CentOS上使用Docker镜像安装Jenkins
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5564963.html
Copyright © 2011-2022 走看看