class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
//这里不能给0作为初值, 因为数组中可能全部都是负数, 导致整个算法无法正常工作
int max = array[0];
int tmp = array[0];
vector<int>::iterator it = array.begin() + 1;
while (it != array.end()) {
//tmp作为中间量 += 数组的值
tmp += *it;
//如果+=数组值后tmp < 数组的值, 那么应该舍弃前面的向量, 从现在开始计算
if (tmp < *it)
tmp = *it;
//如果tmp > max, 则把tmp值赋给max, 这样可以保证max一直保存着最大值
if (tmp > max)
max = tmp;
it++;
}
return max;
}
};
OJ ----- 牛客JZ30 : 连续子数组的最大和
最新推荐文章于 2024-02-13 00:08:34 发布