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