题目描述
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
[要求]
时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)
代码
def maxsumofSubarray(self , arr ):
cur,MAX,i=0,0,0
for i in range(len(arr)):
cur += arr[i]
MAX = max(MAX,cur)
if cur<=0:
cur=0
return MAX
想法
可以累加出最大的和->从第一个算起来->下一个是加好,还是不加好->如果都成负数->重置
全是负数怎么办->0