1
const dfs = (path, visited, result, numbers, limit) => {
2
// return if we already reached the permutation needed
3
if (result.length === limit) {
4
return;
5
}
6

7
// commit the result
8
if (path.length === numbers.length) {
9
result.push(path.join(""));
10
return;
11
}
12

13
// easier to reason and less prone to miss the -1 offset of normal for loop
14
for (const [index, number] of numbers.entries()) {
15
if (visited[index]) continue;
16

17
path.push(number);
18
visited[index] = true;
19
dfs(path, visited, result, numbers);
20
path.pop();
21
visited[index] = false;
22
}
23
};
24

25
var getPermutation = function (n, k) {
26
const numbers = Array.from({ length: n }, (_, i) => i + 1);
27
let visitedNumbers = Array.from(numbers, () => false);
28
let result = [];
29
dfs([], visitedNumbers, result, numbers, k);
30
return result[k - 1];
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0