60. Permutation Sequence
Description
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 for n = 3
:
"123"
"132"
"213"
"231"
"312"
"321"
Given n
and k
, return the kth
permutation sequence.
Example 1:
Input: n = 3, k = 3 Output: "213"
Example 2:
Input: n = 4, k = 9 Output: "2314"
Example 3:
Input: n = 3, k = 1 Output: "123"
Constraints:
1 <= n <= 9
1 <= k <= n!
Solutions
Solution: Math
- Time complexity: O(n)
- Space complexity: O(n)
JavaScript
js
/**
* @param {number} n
* @param {number} k
* @return {string}
*/
const getPermutation = function (n, k) {
const nums = new Array(n)
.fill('')
.map((_, index) => index + 1);
const factorial = new Array(n + 1).fill(1);
let result = '';
for (let num = 1; num <= n; num++) {
factorial[num] = num * factorial[num - 1];
}
k -= 1;
for (let num = n - 1; num >= 0; num--) {
const index = Math.floor(k / factorial[num]);
result += nums[index];
nums.splice(index, 1);
k = k % factorial[num];
}
return result;
};