Skip to content

60. 排列序列 ​

  • 题号:60
  • 来源:LeetCode
  • 难度:困难
  • 标签:数学 排列
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n^2) 时间 · O(n) 空间 · 更新于 2026-09-27

阶乘分组逐位定位,k先自减

typescript
/**
 * @difficulty hard
 * @tags 数学,排列
 * @time O(n^2)
 * @space O(n)
 * @note 阶乘分组逐位定位,k先自减
 * @60. 排列序列
 */

function getPermutation(n: number, k: number) {
    let res = ''
    let num = Array.from({ length: n }, (item, index) => index + 1)
    k--
    for (let i = 0; i < n; i++) {
        let factorial1 = factorial(n - i - 1)
        let index = Math.floor(k / factorial1)
        res += String(num[index])
        num.splice(index, 1)
        k %= factorial1
    }
    return res
};


function factorial(n:number) {
    let num = 1
    for (let i = 1; i <= n; i++) {
        num *= i
    }
    return num
}

源码:ts/leetcode/60. 排列序列.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm