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

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

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

#include <iostream>using namespace std;

const int N = 100010;int a[N], f[N], g[N];int main() {int n;cin >> n;

for(int i = 0; i < n; i ++){
    cin >> a[i];
    f[i] = a[i];
    g[i] = a[i];
}    
int sum = a[0], minN = 0, maxN = a[0];
for(int i = 1; i < n; i ++){
    f[i] = max(f[i - 1] + a[i], a[i]);
    sum += a[i];
    if(f[i] > maxN) maxN = f[i]; 
}
// 找中间是否出现负数 因为如果数组全是正数 就不会经过环 在1 - n就是最大值了
// 所以要在 1 - n - 1寻找最小的包含负数的子数组
for(int i = 1; i < n - 1; i ++){
    g[i] = min(g[i - 1] + a[i], g[i]);
    if(g[i] < minN) minN = g[i];
}
int res = -1e9;
// 最后比较 在环内的数组大还是环外的大
res = max(sum - minN, maxN);
cout << res << endl;
return 0;

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务