python 中的房屋强盗
假设有一个城市,城市中的每栋房屋都有一个特定的数量。一个强盗想在一个晚上抢走这笔钱。这座城市有一个安全系统,即如果两栋相邻的房屋在同一天被破坏,系统将自动报警。我们必须找到这个强盗能抢到的最大金额?
提供了一个数组,在索引 i 处,A[i] 是第 i 栋房屋中存在的金额。假设数组如下:A = [2, 7, 10, 3, 1],则结果为 13。最大金额取自房屋 1(价值 2)、房屋 3(价值 10)、房屋 5(价值 1),因此总金额为 13
为了解决这个问题,我们将遵循此方法 -
- 取 prev1 := 0 且 prev2 = 0
- 对于 i = 0 至 A 的长度
- temp := prev1
- prev1 := prev2 + A[i] 和 prev1 的最大值
- prev2 = temp
- 返回 prev1
示例
我们看看下面的实现来获得更好的理解 -
class Solution(object): def rob(self, nums): """ :type nums: List[int] :rtype: int """ prev2 = 0 prev1 = 0 for i in range(0,len(nums)): temp = prev1 prev1 = max(prev2+nums[i],prev1) prev2 = temp return prev1 ob1 = Solution() print(ob1.rob([2,7,10,3,1]))
输入
nums = [2,7,10,3,1]
输出
13
广告