Skip to content

Commit 7643d32

Browse files
committed
feat: solve DaleStudy#264 with python
1 parent 205f2a5 commit 7643d32

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

house-robber/EGON.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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()

0 commit comments

Comments
 (0)