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
+ from typing import List
2
+ from unittest import TestCase , main
3
+
4
+
5
+ class Solution :
6
+ def rob (self , nums : List [int ]) -> int :
7
+ return self .solve_dp (nums )
8
+
9
+ """
10
+ Runtime: 0 ms (Beats 100.00%)
11
+ Time Complexity: O(n)
12
+ - nums 배열을 조회하며 dp 배열을 갱신하므로 O(n)
13
+ - 2항에 대한 max 연산을 사용하므로 * O(2)
14
+ > O(2 * n) ~= O(n)
15
+
16
+ Memory: 16.62 MB (Beats 24.05%)
17
+ Space Complexity: O(n)
18
+ > 길이가 n인 dp 배열을 사용하므로 O(n)
19
+ """
20
+
21
+ def solve_dp (self , nums : List [int ]) -> int :
22
+ if len (nums ) <= 2 :
23
+ return max (nums )
24
+
25
+ dp = [0 ] * len (nums )
26
+ dp [0 ] = nums [0 ]
27
+ dp [1 ] = max (nums [0 ], nums [1 ])
28
+ for i in range (2 , len (nums )):
29
+ dp [i ] = max (dp [i - 1 ], dp [i - 2 ] + nums [i ])
30
+
31
+ return dp [- 1 ]
32
+
33
+
34
+ class _LeetCodeTestCases (TestCase ):
35
+ def test_1 (self ):
36
+ nums = [2 ,1 ,1 ,2 ]
37
+ output = 4
38
+ self .assertEqual (Solution ().rob (nums ), output )
39
+
40
+
41
+ if __name__ == '__main__' :
42
+ main ()
You can’t perform that action at this time.
0 commit comments