Easy
一个盗贼准备盗窃某条街上的房子,相邻房子同时被窃时会触动报警装置。现在倘若知道每个房子里的钱,确定该盗贼在不惊动警察的前提下能偷到多少钱。
Solution
这是一个迭代问题:
假设房子钱数形成序列nums, 只考虑盗窃前k家的时候有下面的情况:
f(0) = nums[0]
f(1) = max(nums[:1])
f(k) = max(f(k-2)+nums[2],f(k-1))
给nums前面配两个辅助0以帮助迭代。
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
last, now = 0, 0
for num in nums:
last, now = now, max(last+num,now)
return now