leetcode_最大子序和

uestcprince發表於2020-10-08

描述:

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

示例:

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

解題思路:

動態規劃

  nums[i-1]表示到前一項為止的最大子序和 ,如果大於0就可以相加獲得當前位置最大子序和,否則保持當前值不變。

其實就是要求當前最大子序和,可以考慮前一位置最大子序和,如果是大於0的,加上當前值,以獲得當前位置最大子序和,小於0,就不加                        

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        for i in range(1,len(nums)):
            nums[i] = nums[i] + max(nums[i-1], 0)
        return max(nums)

 

相關文章