假設有一個數組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));
}
結果顯示: