Skip to main content

213. House Robber II

Python

Bottom-Up DP

class Solution:
def rob(self, nums: List[int]) -> int:
if len(nums) == 0 or nums is None:
return 0

if len(nums) == 1:
return nums[0]

return max(
self.rob_no_cycle(nums[:-1]),
self.rob_no_cycle(nums[1:])
)

@staticmethod
def rob_no_cycle(nums: List[int]) -> int:
# Leetcode 198. House Robber
t1, t2 = 0, 0
for num in nums:
temp = t1
t1 = max(t2+num, t1)
t2 = temp

return t