假设有一个数组array[]={1,-2,3,10,-4,7,2,-51},求其连续子数组和的最大值。
我们可以这样考虑,首先将1和-2相加,和为-1<0,且-1<3,所以我们舍弃前两项,从第三项开始加 当加到最后一位时,发现和<0,即从第三项开始加到第七项的和为最大值。
代码示例:
public static int SumMax(int[] array){
int sum=0;
int max=0x80000000;
for (int i = 0; i <array.length ; i++) {
if(sum<=0){
sum=array[i];
}else{
sum+=array[i];
}
if(sum>max){
max=sum;
}
}
return max;
}
public static void main(String[] args) {
int[] array2={1,-2,3,10,-4,7,2,-51};
System.out.println(SumMax(array2));
}
结果显示: