方法一
public static int maxSubSum1(int []a){
int maxSum=0; int nowSum=0;
for (int i = 0; i < a.length; i++) {
nowSum=nowSum+a[i];
if(nowSum>maxSum){//更新最大子段和
maxSum=nowSum;
}
if(nowSum<0){//当当前累加和为负数时舍弃,重置为0
nowSum=0;
}
}
return maxSum;
}
方法二
public static int maxSubSum2(int a[]){
int maxSum = 0;
int nowSum;
for (int i = 0; i < a.length ; i++) {
nowSum =0;
for (int j = i; j < a.length ; j++) {
nowSum +=a[j];
if(nowSum > maxSum)
maxSum = nowSum;
}
}
return maxSum;
}