File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ '''
2+ μκ° λ³΅μ‘λ: O(n^2)
3+ - κ° μΈλ±μ€ `i`μμ μ΅λ `nums[i]` λ²μλ§νΌμ `step`μ νμνλ©°, μ΅μ
μ κ²½μ° O(n)λ²μ λ΄λΆ μ°μ°μ΄ μνλ©λλ€.
4+
5+ κ³΅κ° λ³΅μ‘λ: O(n)
6+ '''
7+
8+ class Solution :
9+ def canJump (self , nums : List [int ]) -> bool :
10+ n = len (nums )
11+ if n == 1 :
12+ return True
13+
14+ dp = [False ] * n
15+ dp [- 2 ] = (nums [- 2 ] >= 1 )
16+
17+ for i in range (n - 3 , - 1 , - 1 ):
18+ num = nums [i ]
19+ can_jump_to_end = (num >= n - i - 1 )
20+ if can_jump_to_end :
21+ dp [i ] = True
22+ continue
23+
24+ can_jump_through_next_index = any ([dp [i + step ] for step in range (1 , min (num + 1 , n ))])
25+ dp [i ] = can_jump_through_next_index
26+
27+ return dp [0 ]
28+
29+
30+ '''
31+ μκ° λ³΅μ‘λ: O(n)
32+ - λ°°μ΄μ ν λ²λ§ μννλ©΄μ κ°μ₯ λ©λ¦¬ λλ¬ν μ μλ μμΉλ₯Ό κ°±μ νλ―λ‘ O(n)μ
λλ€.
33+
34+ κ³΅κ° λ³΅μ‘λ: O(1)
35+ '''
36+
37+ from typing import List
38+
39+ class Solution :
40+ def canJump (self , nums : List [int ]) -> bool :
41+ max_reach = 0
42+ n = len (nums )
43+
44+ for i in range (n ):
45+ if i > max_reach : # νμ¬ μΈλ±μ€κ° λλ¬ κ°λ₯ν μ΅λ λ²μλ₯Ό λμ΄μ κ²½μ°
46+ return False
47+
48+ max_reach = max (max_reach , i + nums [i ]) # λλ¬ κ°λ₯ν μ΅λ 거리 κ°±μ
49+
50+ if max_reach >= n - 1 : # λ§μ§λ§ μΈλ±μ€μ λλ¬ κ°λ₯νλ©΄ True λ°ν
51+ return True
52+
53+ return False
You canβt perform that action at this time.
0 commit comments