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)

动态规划连续子数组的最大和

求无序数组的两两元素之差绝对值的最小值

输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决)

求最大连续序列和的一个巧妙方法,时间复杂度O(n)

返回一个整数数组中最大子数组的和