O(n)求一个数组中连续区间和的最大值
Posted kang000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了O(n)求一个数组中连续区间和的最大值相关的知识,希望对你有一定的参考价值。
int n, a[5000]; int main(){ scanf("%d", &n); for (int i = 1; i <= n; i++)cin >> a[i]; ll cur = 0, ans = 0, l, r, tl = 1; for (int i = 1; i <= n; i++){ if (cur<0){ cur = 0; tl = i; } cur += a[i]; if (cur>ans){ ans = cur; r = i; l = tl; } } cout << ans << ‘ ‘ << l << ‘ ‘ << r << endl; return 0; }
以上是关于O(n)求一个数组中连续区间和的最大值的主要内容,如果未能解决你的问题,请参考以下文章
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)