Skip to content

Commit d1eb318

Browse files
authored
Update 1654-minimum-jumps-to-reach-home.js
1 parent bab4d27 commit d1eb318

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

1654-minimum-jumps-to-reach-home.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,50 @@
1+
/**
2+
* @param {number[]} forbidden
3+
* @param {number} a
4+
* @param {number} b
5+
* @param {number} x
6+
* @return {number}
7+
*/
8+
const minimumJumps = function (forbidden, a, b, x) {
9+
const bad = new Set()
10+
const set = new Set()
11+
for (let i of forbidden) {
12+
bad.add(i)
13+
}
14+
let q = []
15+
q.push([0, 0, 0])
16+
set.add('0,0')
17+
while (q.length) {
18+
const tmp = []
19+
const size = q.length
20+
for(let i = 0; i < size; i++) {
21+
const [pos, level, state] = q[i]
22+
23+
if (pos === x) return level
24+
if (state >= 0) {
25+
if (pos <= 4000 && !set.has(pos + a + ',0') && !bad.has(pos + a)) {
26+
set.add(pos + a + ',0')
27+
tmp.push([pos + a, level + 1, 0])
28+
}
29+
if (!set.has(pos - b + ',-1') && !bad.has(pos - b) && pos - b >= 0) {
30+
set.add(pos - b + ',-1')
31+
tmp.push([pos - b, level + 1, -1])
32+
}
33+
} else if (state < 0) {
34+
if (pos <= 4000 && !set.has(pos + a + ',0') && !bad.has(pos + a)) {
35+
set.add(pos + a + ',0')
36+
tmp.push([pos + a, level + 1, 0])
37+
}
38+
}
39+
}
40+
41+
q = tmp
42+
}
43+
return -1
44+
}
45+
46+
// another
47+
148
/**
249
* @param {number[]} forbidden
350
* @param {number} a

0 commit comments

Comments
 (0)