求一个数组的连续子数组和的

假设有一个数组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));
}

结果显示:
结果表示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章