连续子数组的最大和

题目描述:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。

实现语言:Java

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int size=array.length;
        if(size==0||array==null){
            return -1;
        }
        int maxSum=array[0];
        for(int i=0;i<size;++i){
            int curSum=0;
            for(int j=i;j<size;++j){
                curSum+=array[j];
                if(curSum>maxSum){
                    maxSum=curSum;
                }
            }
        }
        return maxSum;
    }
}

 实现语言:Java

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int size=array.length;
        if(size==0||array==null){
            return -1;
        }
        int maxSum=array[0];
        int curSum=array[0];
        for(int i=1;i<size;++i){
            if(curSum<=0){
                curSum=array[i];
            }else{
                curSum+=array[i];
            }
            if(curSum>maxSum){
                maxSum=curSum;
            }
        }
        return maxSum;
    }
}

 

posted on 2018-12-29 23:29  lina2014  阅读(112)  评论(0编辑  收藏  举报

导航