Skip to content

Commit be0a48b

Browse files
committed
feat: add question 1306
1 parent f575e18 commit be0a48b

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

1306.跳跃游戏 III.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* @lc app=leetcode.cn id=1305 lang=javascript
3+
*
4+
* [1306] 跳跃游戏 III
5+
*
6+
* 1. 用 Set 记录走过的点
7+
* 2. 每一步最多只有两种走法, 可行路线其实类似于二叉树, 我们采用 BFS 对结果遍历
8+
* 3. 如果碰到走过的点说明循环了, 抛弃该路径
9+
* 4. 如果碰到 0 了, 说明存在可行路径
10+
* 5. BFS 队列空了还没走到, 就说明无路可达
11+
*
12+
*/
13+
14+
// @lc code=start
15+
/**
16+
* @param {number[]} arr
17+
* @param {number} start
18+
* @return {boolean}
19+
*/
20+
var canReach = function(arr, start) {
21+
const queue = [start];
22+
const set = new Set([start]);
23+
24+
while (queue.length) {
25+
const i = queue.shift();
26+
if (arr[i] === 0) {
27+
return true;
28+
}
29+
30+
if (i - arr[i] >= 0 && !set.has(i - arr[i])) {
31+
queue.push(i - arr[i]);
32+
set.add(i - arr[i]);
33+
}
34+
if (i + arr[i] < arr.length && !set.has(i + arr[i])) {
35+
queue.push(i + arr[i]);
36+
set.add(i + arr[i]);
37+
}
38+
}
39+
40+
return false;
41+
};
42+
// @lc code=end

0 commit comments

Comments
 (0)