Leetcode brushing record-53. Somme maximale de sous-séquence

Insérez la description de l'image ici

À ajouter:
diviser pour mieux régner

La méthode que j'ai implémentée est un algorithme de programmation dynamique
de complexité O (n). Parmi eux, il convient de noter que le
sous - problème f (i) est défini comme le sous-tableau le plus grand et continu se terminant par le i-ème nombre (a [i]). Et
comme ce tableau doit être continu avec un [i-1], il doit également être adjacent au sous-tableau le plus grand et continu se terminant par un [i-1],
donc l'équation de transition d'état satisfait
f (i) = f (i- 1) + a [i] si f (i-1)> 0 sinon a [i], i> = 1

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        if nums == []:
            return 0
        length = len(nums)
        if length == 1:
            return nums[0]
        #本解法中,动态规划的状态转移方程f(i)
        #代表以a(i)为结尾的最大和连续子数组
        res = nums[0]
        maxa = res
        for i in range(length-1):
            tempindex = i + 1#nums[tempindex]代表新考察的数字
            if res >= 0:
                res += nums[tempindex]
            elif res < 0:
                res = nums[tempindex]
            if res > maxa:
                maxa = res
            

        return maxa
Publié 43 articles originaux · loué 14 · 20 000+ vues

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41545780/article/details/105054438
conseillé
Classement