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

 

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