求连续子数组的最大和

看到这个问题我们首先想到的可能是采用暴力解法,使用3个for循环3层遍历,求出每一个子数组的和,然后进行比较求出最大的,但是这样的话时间复杂度就变成O(n^3)了,显然太高了,下面给出一种简便的方法

public int Find_maxsub(int[] array) {  
     if(array.length==0) return 0;
        int max=array[0];
        int sum=0;
        
        for(int i=0;i<array.length;i++){
            if(sum>=0) sum=sum+array[i];
            else sum=array[i];
            if(sum>max) max=sum;
        }
        return max;
}

 

posted on 2016-06-06 10:41  峰小白  阅读(174)  评论(0编辑  收藏  举报