输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)。
设置一个变量存储最大值,一个存储和值,遍历一遍,只要和值大于等于零就保留着,小于零就可以置零了。
N=int(input())
b=[]
for i in range(N):
b.append(int(input()))
maxr=b[0]
sum=b[0]
for j in b[1:]:
sum+=j
if sum>maxr:
maxr=sum
if sum<0:
sum=0
print(maxr)