代码:
class Solution
{
public:
int maxSubArray(int A[], int n)
{
int cur=0, maxx=INT_MIN;
for (int i = 0; i < n; ++ i)
{
cur += A[i];
maxx = max(maxx, cur);
cur = max(cur, 0);
}
return maxx;
}
};
要点是每次累计获得当前值cur时:
先尝试更新maxx (之所以先更新,是为了处理输入为[-1])的情况;
后再考察cur是否小于0,小于0则归零,意味前面的子串不能用于增加最大值,应舍去。