给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
[要求]
时间复杂度为,空间复杂度为
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的元素
输出一个整数表示答案
7 1 -2 3 5 -2 6 -1
12
n=int(input()) number_list=list(map(int,input().split())) dp=[number_list[i] for i in range(len(number_list))] for i in range(1,len(number_list)): dp[i]=max(dp[i],dp[i-1]+number_list[i]) print(max(dp))
N = eval(input()) ls = list(map(int, input().split())) max_sum = 0 # 最大值 count = 0 # 累加和初始化 for i in range(len(ls)): if ls[i]+count > 0: count += ls[i] max_sum = max(max_sum, count) # 每次累加都更新最大值 else: count = 0 print(max_sum)最大子列和问题:一次遍历,累加和大于0就一直累加,期间用max函数来选择每次累加后的最大值,当累加和为0或为负值时,重置累加和为0继续遍历