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
}在 GitHub 上查看题目所在目录:lmliheng/algorithm