劍指offer-求最大連續子序列和O(n)-Java

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例:

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6

思路:上來就暴力,不行的。考慮用一個maxsum記錄最大值,用sum,記錄每次相加後的和,得到sum後,如果sum>maxsum,則maxsum = sum,否則什麼都不做(什麼都不做)。如果sum小於零,說明新加的這個數太小了,拖累了前面的所有值,sum清零重來。

 

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {

	if(null == array || array.length == 0){
		return 0;
	}
 
	int sum= array[0];
	int max = array[0];
	for(int i = 1; i < array.length; i++){
		if(sum< 0){
			sum= 0;
		}
		sum+= array[i];
		max = Math.max(max, sum);
	}
	return max;
    }
}

 

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