题解 | #连续子数组的最大和#
连续子数组的最大和
http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484
思路
核心点在于理解到:若前面部分的和 < 0,说明前面的部分对于计算总和这件事来说只会拖后腿,那么便舍弃掉,将计算当前sum的起点重设为0。但同时要一直更新当前的最大和值
代码
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int maxSum = Integer.MIN_VALUE; // 因为有负数,所以不能设为0 int curSum = 0; for(int i = 0;i < array.length;i++){ curSum += array[i]; maxSum = Math.max(maxSum,sum); if(curSum < 0) curSum= 0; } return maxSum; // 核心!!若小于0,则计算和的起点重新置为0 } }