-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path198.py
31 lines (25 loc) · 829 Bytes
/
198.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from typing import List
# Name: House Robber
# Link: https://leetcode.com/problems/house-robber/
# Method: Dynamic programming, max of prev 2 days
# Time: O(n)
# Space: O(1)
# Difficulty: Medium
class Solution:
def rob(self, nums: List[int]) -> int:
rob_prev = 0
rob_max = 0
for x in nums:
temp = rob_max
rob_max = max(rob_prev + x, rob_max)
rob_prev = temp
return rob_max
def rob_alternate(self, nums: List[int]) -> int:
prev_houses = [0, 0, 0]
for i in range(len(nums)):
stolen_now = max(prev_houses[1], prev_houses[0]) + nums[i]
prev_houses[0] = prev_houses[1]
prev_houses[1] = prev_houses[2]
prev_houses[2] = stolen_now
print(prev_houses)
return max(prev_houses)