题解 | #连续子数组的最大和#
连续子数组的最大和
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;
}
