子数组最大累加和(python)

子数组的最大累加和问题

http://www.nowcoder.com/questionTerminal/554aa508dd5d4fefbf0f86e5fe953abd

思路:第一个元素不为负数,如果前面数的累加值加上当前数后的值比当前数小,说明当前数对整体和是有害的;反之,说明当前数对整体和是有利的。

遍历数组元素,如果前面的累加值为负数或者0,则对累加值清0重新计算,把当前的第i个元素赋值给累加值,反之,将之前的累加值加上当前的第i个元素值

class Solution:
    def maxsumofSubarray(self , arr ):
        # write code here
        sum = arr[0]
        presum = 0
        for i in arr:
            if presum < 0:
                presum = i
            else:
                presum += i
            sum = max(presum, sum)
        return sum
全部评论

相关推荐

评论
21
2
分享

创作者周榜

更多
牛客网
牛客企业服务