1. 程式人生 > >常見演算法 - 連續子陣列最大和

常見演算法 - 連續子陣列最大和

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        if(array.length == 0){
            return 0;
        }
        //sum為子陣列的和
		int sum = array[0];
		//max為子陣列的最大和
		int max = array[0];
		
		for(int i=1;i<array.length;i++){
			sum += array[i];//求和
			if(sum < 0 && sum < max){//如果當前求得總和為負數且小於max(考慮最後max為負數的情況)的話,就將其清零,從下一位置重新累加
                sum = 0;             //若果當前求和不是負數只是小於max,可以繼續累加。
			} else if( sum > max ){//如果求得總和大於之前的最大值的話,就將sum賦值給max,同時記錄最後的位置
				max = sum;
			}
		}
        return max;
    }
}