题解 | #连续子数组的最大和#
连续子数组的最大和
http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484
public static int FindGreatestSumOfSubArray(int[] array) { //取第一个为初始最大值 int nowMax = array[0]; int nowCount = array[0]; //从第二个开始计算 for (int i = 1; i < array.length; i++) { int val = array[i]; //如果碰到负数,说明,当前值nowCount会变小, // 则记录当前的nowCount是否最大值 if (val < 0 && nowCount > nowMax) { nowMax = nowCount; } nowCount += val; //如果加完之后,居然比没加之前要小, // 说明val更大,放弃之前的结果,从val开始重新计算 if (nowCount < val) { nowCount = val; } } //对最终结果进行比较 if (nowCount > nowMax) { nowMax = nowCount; } return nowMax; }