首页 > 试题广场 >

子数组的最大累加和问题

[编程题]子数组的最大累加和问题
  • 热度指数:2857 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
[要求]
时间复杂度为,空间复杂度为


输入描述:
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的元素


输出描述:
输出一个整数表示答案
示例1

输入

7
1 -2 3 5 -2 6 -1 

输出

12 

备注:

头像 九皋凤鸣
发表于 2021-11-25 06:49:51
思路: 如果某段累加和<0, 则对后续累加无(正)贡献, 需终止本段累加,重启新累加; 求多段累加和的最大值。 步骤: 累加: 从左到右,累加; 控制: α.累加和>0,继续累加; β.累加和<0, a、终止本轮累加; b、max(当前累加和最值,本次累加之前的和) c 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-12 16:12:28
n = int(input()) nums = list(map(int, input().split())) before = nums[0] res = nums[0] for i in range(1, n): before = max(nums[i], nums[i] + befor 展开全文
头像 瓜瓜请多指教
发表于 2020-07-21 16:49:19
include <bits/stdc++.h> using namespace std; int main(){ int N; cin>>N; vector<int> arr(N); for(int i=0;i<N;i++) 展开全文

问题信息

上传者:小小
难度:
16条回答 2523浏览

热门推荐

通过挑战的用户

查看代码