思路:第一个元素不为负数,如果前面数的累加值加上当前数后的值比当前数小,说明当前数对整体和是有害的;反之,说明当前数对整体和是有利的。
遍历数组元素,如果前面的累加值为负数或者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