Knight Probability in Chessboard LeetCode solution in JavaScript

1
var knightProbability = function (n, k, row, column) {
2
if (k === 0) return 1;
3
const dirs = [
4
[-2, -1],
5
[-1, -2],
6
[1, -2],
7
[2, -1],
8
[2, 1],
9
[1, 2],
10
[-1, 2],
11
[-2, 1],
12
];
13
const dp = Array(k + 1)
14
.fill("")
15
.map((_) =>
16
Array(n)
17
.fill("")
18
.map((_) => Array(n).fill(0))
19
);
20

21
const isOut = (pos) => pos < 0 || pos > n - 1;
22
const move = (x = row, y = column, step = k) => {
23
if (step === 0) return 1;
24
const moves = dp[step][x][y];
25
if (moves !== 0) return moves;
26

27
for (const [mvoeX, moveY] of dirs) {
28
const nextX = x + mvoeX;
29
const nextY = y + moveY;
30
if (isOut(nextX) || isOut(nextY)) continue;
31

32
dp[step][x][y] += move(nextX, nextY, step - 1);
33
}
34
return dp[step][x][y];
35
};
36

37
move();
38
return dp[k][row][column] / 8 ** k;
39
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0