File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import List
2+ from unittest import TestCase , main
3+
4+
5+ class Solution :
6+ def canJump (self , nums : List [int ]) -> bool :
7+ return self .solve_dp (nums )
8+
9+ """
10+ Runtime: 5585 ms (Beats 5.91%)
11+ Time Complexity: O(n * m)
12+ - dp ๋ฐฐ์ด ์์ฑ์ nums์ ๊ธธ์ด n ๋งํผ ์กฐํํ๋๋ฐ O(n)
13+ - ์์ฑํ dp ๋ฐฐ์ด์ ์กฐํํ๋๋ฐ O(n)
14+ - dp[i]์์ ์ ํํ๋ ๋ฒ์์ ์ํด * O(2 * m)
15+ > O(n) + O(n) * O(2 * m) ~= O(n * m)
16+
17+ Memory: 17.80 MB (Beats 46.08%)
18+ Space Complexity: O(n)
19+ > nums์ ๊ธธ์ด์ ๋น๋กํ๋ dp ๋ฐฐ์ด ํ๋๋ง ์ฌ์ฉ, O(n)
20+ """
21+ def solve_dp (self , nums : List [int ]) -> bool :
22+ dp = [True if i == 0 else False for i in range (len (nums ))]
23+ for i in range (len (nums )):
24+ if dp [- 1 ] is True :
25+ return True
26+
27+ if dp [i ] is True :
28+ for jump in range (- nums [i ], nums [i ] + 1 ):
29+ if 0 <= i + jump < len (dp ):
30+ dp [i + jump ] = True
31+
32+ return dp [- 1 ]
33+
34+
35+ class _LeetCodeTestCases (TestCase ):
36+ def test_1 (self ):
37+ nums = [2 , 3 , 1 , 1 , 4 ]
38+ output = True
39+ self .assertEqual (Solution .canJump (Solution (), nums ), output )
40+
41+
42+ if __name__ == '__main__' :
43+ main ()
You canโt perform that action at this time.
0 commit comments