题目
题目来源
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
思路
还是参考的评论区的思路
通过一遍遍历完成
相关思考
一开始不太理解清零条件 count<=0,实际上 当count<=0时,再往后加必然小于等于后面一个数本身,所以此时可以清零
代码(C++/力扣)
lass Solution {
public:
int maxSubArray(vector<int>& nums) {
int result = INT32_MIN;
int count = 0;
for (int i = 0; i < nums.size(); i++) {
count += nums[i];
if (count > result) { // 取区间累计的最大值(相当于不断确定最大子序终止位置)
result = count;
}
if (count <= 0) count = 0; // 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和
}
return result;
}
};