题目:
输入一个 非空 整型数组,数组里的数可能为正,也可能为负。
数组中一个或连续的多个整数组成一个子数组。
求所有子数组的和的最大值。
要求时间复杂度为O(n)。
样例:
样例
输入:[1, -2, 3, 10, -4, 7, 2, -5]
输出:18
class Solution {
public://遇到小于0的元素,舍弃前面的数之和,sum重置为0,大于0的元素直接相加,比较最大值
int maxSubArray(vector<int>& nums) {
int max_sum = INT_MIN, sum = 0;
for(auto x : nums){
if(x < 0)sum = 0;
sum += x;
max_sum = max(max_sum,sum);
}
return max_sum;
}
};