• 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 装mysql的方法和步骤
    Linux查看系统发行版本
    Spinner
    时间与日期选择器
    Linux目录处理命令
    开发Activity
    js属性操作(2)
    Js的属性操作(1)
    学习java Script的热身作业
    在Windows下搭建Android开发环境
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5564963.html
Copyright © 2020-2023  润新知