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