Recursion & DP Target: 10s
At each house: rob it (prev2 + current) or skip it (prev1). Classic two-variable DP.
def rob(nums):
if not nums: return 0
if len(nums) == 1: return nums[0]
prev2, prev1 = 0, 0
for x in nums:
prev2, prev1 = prev1, max(prev1, prev2 + x)
return prev1
Type it from memory. Go.