53 最大子序和 - 動態規劃 & 分治

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例:

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。

 

 

用一個sub_max來記錄每個子序列的最大值。

用一個total_max來記錄最終的最大值

動態規劃

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        total_max = nums[0]
        sub_max = nums[0]
        for i in range(1, len(nums)):
            sub_max = max(sub_max + nums[i], nums[i])

            total_max = max(sub_max, total_max)
        return total_max

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章