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

遍历数组元素,如果前面的累加值为负数或者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