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


京公网安备 11010502036488号