看到这道题,第一反应:前缀和
BUT,前缀和貌似过不了QAQ
看了看难度:感觉我省一白拿了QAQ
然后,仔细想了想,写了一个看似对的算法,结果竟然。。。
时间复杂度:O(n)空间:O(1)
int n,k,ans=-23333333;
int main()
{
n=read();
fr(i,1,n)
{
k=k+read();//当前的子段和
ans=max(ans,k);//update
k=k>0?k:0;//小于0不如不要
}
printf("%d\n",ans);
return 0;
}
本文介绍了一种求解最大子段和问题的高效算法。通过不断更新子段和与最大值,实现时间复杂度为O(n),空间复杂度为O(1)的目标。算法巧妙地处理了子段和为负数的情况。

3908

被折叠的 条评论
为什么被折叠?



