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。
    初始值设置为第一个元素,这样才能保证数组全为负数时,返回一个最大负数。

全部评论

相关推荐

10-22 20:17
已编辑
门头沟学院 Python
敢逐云霄志:后端没92学历+大厂实习基本别想在秋招约面了,笔试可能都不会给你发,我双非本3段实习,一大,中,一小,中大厂笔试做了一堆,大厂就只有字节给面,其他全没动静,根本轮不到双非。
你觉得第一学历对求职有影...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务