Leetcode brushing record-198. Dajia

Inserte la descripción de la imagen aquí
Use el subproblema de programación dinámica
: para las primeras i casas, la cantidad máxima que se puede robar es f (i) el
límite es f (1) = a [0]
f (2) = max (a [0], a [1] )
Ecuación de transferencia de estado: f (n) = max (f (n-2) + a (n), f (n-1)), donde a es una lista que representa la cantidad de efectivo en cada casa, n> = 3

class Solution:
    def rob(self, nums: List[int]) -> int:
        if nums == []:
            return 0
        length = len(nums)

        if length == 1:
            return nums[0]
        elif length == 2:
            return max(nums)
        
        res = 0
        l_2 = nums[0]
        l_1 = max(nums[0],nums[1])
        for i in range(length - 2):
            tempindex = i + 2
            res = max(l_2+nums[tempindex],l_1)
            l_2 = l_1
            l_1 = res

        return res
Publicado 43 artículos originales · elogiado 14 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/weixin_41545780/article/details/105052261
Recomendado
Clasificación