House Robber 入室盗窃

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

你可能感兴趣的:(House Robber 入室盗窃)