O(N)时间,O(1)空间

连续子数组的最大和

http://www.nowcoder.com/questionTerminal/459bd355da1549fa8a49e350bf3df484

class Solution:
    def FindGreatestSumOfSubArray(self, a):
        s = 0
        ret = a[0]
        for i in a:
            s = s+i
            ret = max(s,ret)
            if s < 0:
                s = 0
        return ret
s表示前i个元素的最大连续和(在必定包括i的条件下,否则为0)
    所以,在s=i+s使得s为负时,i过于负贡献时,设置s为0
ret表示前i个元素的最大连续和(可不包括i)。所以最后可直接返回ret。
    初始值设置为第一个元素,这样才能保证数组全为负数时,返回一个最大负数。

全部评论

相关推荐

牛客971438129号:应该是到最后offer评估阶段了,接口人告诉我先报批,报批之后定薪,最后offer评估
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务