最大子段和

连续子数组的最大和

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;
    }
}
全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务