2
7
9
3
1
[0][1][2][3][4]
dp
·
·
·
·
·
[0][1][2][3][4]
The 5-step framework (House Robber)
▸1def rob(nums):2 # 1. state: dp[i] = best loot using houses 0..i3 # 2. recurrence: dp[i] = max(dp[i−1], dp[i−2] + nums[i])4 # 3. base cases:5 dp[0] = nums[0]6 dp[1] = max(nums[0], nums[1])7 # 4. order: left to right8 for i in 2..n−1:9 # skip house i, or rob it + best two back10 dp[i] = max(dp[i−1], dp[i−2] + nums[i])11 # 5. answer lives in the last cell12 return dp[n−1]
state
- problemHouse Robber
- nums[2, 7, 9, 3, 1]