最大子段和
连续子数组的最大和
http://www.nowcoder.com/questionTerminal/459bd355da1549fa8a49e350bf3df484
简单DP,最大子段和。
以每一个数字为终点,都可以得到一个最大的子段和。
一般当前数字为终点,主要看它前一个节点上的最大子段和是不是为负数,如果为负数,则不与上一个节点相连,如果是正数就相连。
只需要关注以上一个记得点为终点的字段和是否大于零。
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int l = array.length; int[] mSumArr = new int[l]; int max = array[0]; for(int i=0;i<l;i++){ if(i==0){ mSumArr[i] = array[i]; }else { if(mSumArr[i-1]>0){ mSumArr[i] = array[i]+mSumArr[i-1]; }else { mSumArr[i] = array[i]; } } if(mSumArr[i]>max){ max=mSumArr[i]; } } return max; } }