Minimum Jumps to Reach Home LeetCode solution in JavaScript

1
var minimumJumps = function (forbidden, a, b, x) {
2
let f = new Set(forbidden);
3
let m = 2000 + 2 * b;
4
let memo = {};
5
let visited = new Set();
6
let res = dfs(0, true);
7
return res === Infinity ? -1 : res;
8

9
function dfs(i, canJumpBack) {
10
if (i === x) return 0;
11
let key = `${i},${canJumpBack}`;
12
visited.add(i);
13
if (memo[key] !== undefined) return memo[key];
14
if (i > m || i < 0) return Infinity;
15
let min = Infinity;
16
if (canJumpBack && !f.has(i - b) && !visited.has(i - b)) {
17
min = Math.min(min, 1 + dfs(i - b, false));
18
}
19

20
if (!f.has(i + a) && !visited.has(i + a)) {
21
min = Math.min(min, 1 + dfs(i + a, true));
22
}
23

24
visited.delete(i);
25
return (memo[key] = min);
26
}
27
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0