题解 | #环形数组的连续子数组最大和#

环形数组的连续子数组最大和

https://www.nowcoder.com/practice/53a9f1ba687440cc9c641c2b042a59d7

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    vector<int> a(n) ;
    for(int i=0;i<n;i++)
        cin>>a[i];
    // vector<int> dp(2*n+1) ;
    // dp[]k
    int dpmin,dpmax;
    dpmax= dpmin=a[0];
    int mx=a[0];
    int mn = 0;
    int sum=mx;
    for(int i=1;i<(n);i++) {
        int j = a[i];
        sum+=j;
        dpmax = max(dpmax+j,j);
        if(mx<dpmax) mx = dpmax;
    }
    for(int i=1;i<n-1;i++) {
        int j = a[i];
        dpmin = min(dpmin,0)+j;
        if(mn > dpmin)
            mn = dpmin;
    }
    cout <<max(mx,sum-mn) <<endl;
    return 0;
}


算法常用解题技巧 文章被收录于专栏

算法常用解题技巧

全部评论

相关推荐

03-09 20:32
技术支持工程师
牛客972656413号:成绩管理系统会不会有点太。。。
点赞 评论 收藏
分享
练习JAVA时长两年半:qps 30000
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务