注意事项
这个题目很容易搞明白, 但是需要注意的是, 这个题目的初始化
比较麻烦.
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
# guard phase, 无法递推就直接硬编码
if n == 0:
return 0
elif n==1:
return nums[0]
elif n==2:
return max(nums[0],nums[1])
dp = [0]*n
# 初始化
dp[0] = nums[0]
dp[1] = max(nums[0],nums[1])
for i in range(2, n):
dp[i] = max(dp[i-2]+nums[i], dp[i-1])
return dp[-1]
```