描述
请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续)例如:给出的数组为[−2,0,−3,4,−2,2,2,−5,4],子数组[−2,0,−3,4,−2,2,2,−5,4],具有最大的和:6.
public int maxSubArray (int[] A) {
if(A.length == 0) return 0;
int sum = 0, max = A[0];
for(int i = 0;i<A.length;i++){
sum = sum+A[i];
if(max <sum) max = sum; //max只是为了找到子数组最大的和
if(sum < 0) sum = 0; //如果sum是负数,那么它对于下一个数没有一个正加成,清零
}
return max;
}