常见算法 - 连续子数组最大和

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;
    }
}

猜你喜欢

转载自blog.csdn.net/b9x__/article/details/81874779
今日推荐