假设有一个城市,并且城市中的每个房屋都有一定数量。一个抢劫犯想在一晚之内抢钱。该城市拥有一个安全系统,就好像同一天晚上连续破坏了两栋房屋一样,它将自动报警。因此,我们必须找出强盗可以劫持的最大金额?
提供了一个数组,在索引i处,A [i]是第i个房屋中存在的数量。假设数组是这样的:A = [2,7,10,3,1],则结果将为13。最大值取自house1(值2),house3(值10)和house5(值1)。 ),因此总数为13
为了解决这个问题,我们将遵循这种方法-
取prev1:= 0和prev2 = 0
对于i = 0到A的长度-
temp:= prev1
prev1:= prev2 + A [i]和prev1的最大值
prev2 =临时
返回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