Python3 alcanzar problema botín

Python3 alcanzar problema botín

Título original https://leetcode-cn.com/problems/house-robber/

Usted es un ladrón profesional para robar plan de la calle de la casa. Todas las habitaciones están en posesión de algo de dinero, las únicas limitaciones que afectan a robar la casa de su vecino está equipado con el sistema anti-robo de comunicarse entre sí, si dos casas adyacentes en la misma noche, los ladrones entraron en el sistema emitirá una alarma automática .
Dado un representante de cada array entero no negativo de cantidad de almacenamiento de Vivienda calculado en caso de que no toque el dispositivo de alarma, puede robar la cantidad máxima a.

Ejemplo 1:

输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。

Ejemplo 2:

输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
     偷窃到的最高金额 = 2 + 9 + 1 = 12 。

La resolución de problemas:

class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if n == 0:
            return 0
        if n == 1:
            return nums[0]
        if n == 2:
            return max(nums[0], nums[1])
        e0 = 0
        e1 = nums[0]
        e2 = max(nums[0], nums[1]) #动态规划思路,但是只需要3个中间值
        for i in range(3, n + 1):
            e0, e1, e2 = e1, e2, max(nums[i-1] + e1, nums[i-2] + e0)
        return e2
Publicado 24 artículos originales · ganado elogios 0 · Vistas 417

Supongo que te gusta

Origin blog.csdn.net/qq_18138105/article/details/105166013
Recomendado
Clasificación