题目描述
请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续)
例如:给出的数组为[−2,0,−3,4,−2,2,2,−5,4],
子数组[−2,0,−3,4,−2,2,2,−5,4],具有最大的和:6.
class Solution {
public:
/**
*
* @param A int整型一维数组
* @param n int A数组长度
* @return int整型
*/
int maxSubArray(int* A, int n) {
// write code here
// sum[i] = max(sum[i-1] + A[i],A[i])
int res = A[0];
int sum = 0;
for(int i = 0; i < n; i++){
sum = max(A[i] + sum, A[i]);
res = max(res, sum);
}
return res;
}
};
错因分析
- sum初始化应该是0,我错写成A[0],导致部分结果错误