问题描述
在数组中找到相邻的子数组(至少包含一个数字),它的总和是最大的。
例如,考虑到array[2−1−3、4、−1,2,1−5,4],
连续的子数组[4, -1, 2, 1]有最大的和=6。
解题思路
1、从头开始累加,直到和为负。此时前面这段不能给后面的串带来正收益,应舍弃,sum清零
2、然后在开始统计最大的sum.
代码示例
class Solution {
public:
int maxSubArray(int A[], int n) {
if (n == 0) return 0;
int sum = 0, max = A[0];
for (int i = 0; i < n; i++) {
sum += A[i];
if (max < sum) max = sum;
if (sum < 0) sum = 0;
}
return max;
}
};