a = [-2, 1, 3, 4, -7, 5, -6, 2, 7] def foo(arr): res = arr[0] # 保存最大的累计和 arr_sum = 0 # 保存累计和 for num in arr: if arr_sum > 0: arr_sum += num # 累计和为非负,有继续累加的意义 else: arr_sum = num # 累加和为负无意义重新累计 res = max(res, arr_sum) # 最大的累计和 return res if __name__ == '__main__': print(foo(a))