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

全部评论

相关推荐

04-11 23:51
门头沟学院 Java
坚定的芭乐反对画饼_许愿Offer版:人人都能过要面试干嘛,发个美团问卷填一下,明天来上班不就好了
点赞 评论 收藏
分享
05-25 10:45
西华大学 Java
Frank_zhang:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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