Skip to content

Commit be31536

Browse files
authored
Create 1210-minimum-moves-to-reach-target-with-rotations.js
1 parent 4230e53 commit be31536

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number}
4+
*/
5+
const minimumMoves = function (grid) {
6+
const n = grid.length;
7+
const start = [0, 0, 0, 1].join(',');
8+
const end = [n - 1, n - 2, n - 1, n - 1].join(",");
9+
let curr_level = new Set([start]);
10+
let moves = 0;
11+
const visited = new Set();
12+
while (curr_level.size) {
13+
const next_level = new Set();
14+
for (let pos of curr_level) {
15+
visited.add(pos);
16+
let [r1, c1, r2, c2] = pos.split(",").map((e) => +e);
17+
if (
18+
c1 + 1 < n &&
19+
grid[r1][c1 + 1] == 0 &&
20+
c2 + 1 < n &&
21+
grid[r2][c2 + 1] == 0
22+
) {
23+
const coord = [r1, c1 + 1, r2, c2 + 1].join(",");
24+
if (!visited.has(coord)) {
25+
next_level.add(coord);
26+
}
27+
}
28+
if (
29+
r1 + 1 < n &&
30+
grid[r1 + 1][c1] == 0 &&
31+
r2 + 1 < n &&
32+
grid[r2 + 1][c2] == 0
33+
) {
34+
const coord = [r1 + 1, c1, r2 + 1, c2].join(",");
35+
if (!visited.has(coord)) {
36+
next_level.add(coord);
37+
}
38+
}
39+
if (
40+
r1 == r2 &&
41+
c2 == c1 + 1 &&
42+
r1 + 1 < n &&
43+
grid[r1 + 1][c1] + grid[r1 + 1][c1 + 1] == 0
44+
) {
45+
const coord = [r1, c1, r1 + 1, c1].join(",");
46+
if (!visited.has(coord)) {
47+
next_level.add(coord);
48+
}
49+
}
50+
if (
51+
c1 == c2 &&
52+
r2 == r1 + 1 &&
53+
c1 + 1 < n &&
54+
grid[r1][c1 + 1] + grid[r1 + 1][c1 + 1] == 0
55+
) {
56+
const coord = [r1, c1, r1, c1 + 1].join(",");
57+
if (!visited.has(coord)) {
58+
next_level.add(coord);
59+
}
60+
}
61+
}
62+
if (next_level.has(end)) {
63+
return moves + 1;
64+
}
65+
curr_level = next_level;
66+
moves += 1;
67+
}
68+
return -1;
69+
};

0 commit comments

Comments
 (0)