1.代码
class Solution:
def rob(self, nums: List[int]) -> int:
length=len(nums)
if(length==0):
return 0
if(length==1):
return nums[0]
if(length==2):
return max(nums[0],nums[1])
result = []
result.append(0)
result.append(nums[0])
result.append(max(nums[0],nums[1]))
for i in range(3,length+1):
result.append(max(result[i-1],result[i-2]+nums[i-1]))
return result[length]
2.思路
对长度为0,1,2的情况单独讨论,当长度>=3,分为抢劫最后一家和不抢劫最后一家两种情况,若抢劫最后一家则无法抢劫倒数第二家。