House robber
class Solution:
def rob(self, nums: List[int]) -> int:
# dynamic_programming
dp = {} # {room : val}
dp[0] = nums[0]
if len(nums) == 1:
return dp[0]
dp[1] = max(nums[0], nums[1])
if len(nums) == 2:
return dp[1]
for room, val in enumerate(nums): #room=2
if room >= 2:
dp[room] = max(
dp[room-1],
val+dp[room-2]
)
return max(dp.values())