文章目录
**
NC19——子数组的最大累加和问题
**
题解:一个变量res 记录当前得到的最大和
一个变量curr记录当前新的子数组累加的结果
注:当 curr的值 < 0 时, 后面尽管在往这个数组上填数,都不会是最大和
当curr的值>0时,比较 curr 与 res的大小,若是 curr>res,则更新res,同时,后续还可以往curr代表的子数组上继续添加新的元素。并重复上述操作。
class Solution {
public:
/**
* max sum of the subarray
* @param arr int整型vector the array
* @return int整型
*/
int maxsumofSubarray(vector<int>& arr) {
// write code here
int res = 0, curr = 0;
for(auto i : arr)
{
curr += i;
if(curr < 0)
{
curr = 0;
}
else if(curr > res)
{
res = curr;
}
}
return res;
}
};