leetcode 198. 打家劫舍

解体思路

到达第i个房屋,可以偷窃到的最高金额
dp[i] = max(dp[i-2] + nums[i], dp[i-1])

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def rob(self, nums: List[int]) -> int:
nums_len = len(nums)
dp = [0] * nums_len

dp[0] = nums[0]
if nums_len == 1:
return dp[0]

dp[1] = max(nums[0], nums[1])
if nums_len == 2:
return dp[1]

for i in range(2, nums_len):
dp[i] = max(dp[i-2] + nums[i], dp[i-1])

return dp[nums_len-1]