leetcode--53.最大子序列和

题目:

leetcode--53.最大子序列和_第1张图片

解法一:动态规划

如果前面的和小于0,那么加上以后一定比当前值小,则置前面的和为0

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

时间复杂度O(n),空间复杂度O(1)

解法二:

找左边的最大子序列,右边的最大子序列和从包括中间数的子序列。

时间复杂度O(NlogN)

你可能感兴趣的:(leetcode--53.最大子序列和)