python实现 leetcode 53. maximum-subarray

按顺序求数组里面连续的数字和的最大值。maximum-subarray

效率最高的一种方式,代码很清楚,同样借助两个变量。

class Solution(object):
    def maxSubArray(self, nums):
        """ :type nums: List[int] :rtype: int """
        if len(nums) == 0:
            return 0

        max_sum = nums[0]
        cur_sum = 0

        for i in range(0, len(nums)):
            cur_sum = cur_sum + nums[i]

            if cur_sum > max_sum:
                max_sum = cur_sum

            if cur_sum < 0:
                cur_sum = 0

        return max_sum

我的做法是分开写了, 时间复杂度差不多。稍微慢了10ms.

class Solution(object):
    def maxSubArray(self, nums):
        """ :type nums: List[int] :rtype: int """
        if len(nums) <= 1:
            return sum(nums)
        ret, k = nums[0], nums[0]
        for value in range(1, len(nums)):
            ret += nums[value]
            if ret >= 0:
                ret = max(ret, nums[value])
                k = max(k, ret)
            else:
                ret = nums[value]
                k = max(k, nums[value])
        return k
    原文作者:算法
    原文地址: https://www.twblogs.net/a/5bd3bf692b717778ac20c96a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞