File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments