题目描述:
收获:
数组中可能存在负数,所以之前写的程序在此处不适用
代码:
有两种方法
第一种:
保存上一次的值,在每一次循环的时候进行比较
主要找当前元素nums[i] 和其之前子串和比较大小,留下较大的元素。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int pre = 0, res = nums[0];
for (int i = 0; i < nums.size(); i++) {
pre = max(pre + nums[i], nums[i]);
res = max(res, pre);
}
return res;
}
};
第二种: