1
var snakesAndLadders = function (board) {
2
let n = board.length;
3
let seen = new Set();
4
let queue = [[1, 0]];
5

6
while (queue.length) {
7
let [label, step] = queue.shift();
8
//console.log(label, step);
9
let [r, c] = labelToPosition(label, n);
10
//console.log(r, c, n);
11
if (board[r][c] !== -1) {
12
label = board[r][c];
13
}
14
if (label == n * n) {
15
return step;
16
}
17
for (let x = 1; x < 7; x++) {
18
let nextLabel = label + x;
19
if (nextLabel <= n * n && !seen.has(nextLabel)) {
20
seen.add(nextLabel);
21
queue.push([nextLabel, step + 1]);
22
}
23
}
24
}
25
return -1;
26
};
27

28
const labelToPosition = (label, n) => {
29
let row = Math.floor((label - 1) / n);
30
let col = (label - 1) % n;
31
//console.log("label", row, col);
32
if (row % 2 === 0) {
33
return [n - 1 - row, col];
34
} else {
35
return [n - 1 - row, n - 1 - col];
36
}
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0