zoukankan      html  css  js  c++  java
  • Leetcode 60. 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):

    Given n and k, return the kth permutation sequence.

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

    标签 Backtracking Math

    类似题目 (M) Next Permutation (M) Permutations

     
     
     
    思路:
    1.对于由{1,2,...,n}组成的第k个数(k从0开始),k = a * (n-1)! + b,其中a表示的是{1,2,...,n}中第a个数,b表示的是由{1,2,...,n}去掉第a个数后剩下的数(维持升序排列)构成的数组成的排列的第b个排列。
    2.k = b,重复1共n次。

    代码:

     1 public class Solution {
     2     public String getPermutation(int n, int k) {
     3         List<Integer> numbers = new ArrayList<>();
     4         int[] factor = new int[n];
     5         int i, t;
     6         String res = "";
     7         factor[0] = 1;
     8         for (i = 1; i < n; ++i)    factor[i] = factor[i - 1] * i;
     9         for (i = 1; i <= n; ++i) numbers.add(i);
    10         k--;
    11         for (i = n - 1; i >= 0 ; --i) {
    12             t = k / factor[i];
    13             res = res + numbers.get(t);
    14             k = k % factor[i];
    15             numbers.remove(t);
    16         }
    17         return res;
    18     }
    19 }
  • 相关阅读:
    markdown常用语法
    利用 js-xlsx 实现选择 Excel 文件在页面显示
    HTML中meta标签
    wxpy模块
    Python基础(3)
    Python基础(2)
    Python基础(1)
    Python之递归锁与互斥锁
    Python进程与线程
    Docker
  • 原文地址:https://www.cnblogs.com/Deribs4/p/6602289.html
Copyright © 2011-2022 走看看