传送门
记笔记
用一个变量 s 来更新状态,max()求子数组最大值。很巧妙,记录一下以后多来练习
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res = INT_MIN, s = 0; // res初始化是最小值, s 为当前位置之前子数组最大值。
for(auto &t : nums)
{
if(s < 0) s = 0; //如果 s < 0了,说明加上 t 收益不能增加,反而减少,将s = 0.
s += t;
res = max(res, s); //记录最大子数组和。
}
return res;
}
};