连续子数组的最大和

{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)

 

如果某一个数x前面的和sum为负数,则sum再加上x肯定比x小,所以应该舍弃前面的和,从x开始往后加

如果前面的和为正数,则x+sum大于x,判断x+sum时候大于之前记录的max

 

public static int maxsum(int arr[]){
            //6,-3,-2,7,-15,1,2,2
            int sum = arr[0];  //最大和
            int current = arr[0];  //之前累计的和
            for(int i=1;i<arr.length;i++){
                if(current<=0){
                    current = arr[i];
                }else{
                    current += arr[i];
                }
if(current>sum)
sum = current; }
return sum; }

 

posted on 2017-08-24 16:12  zhangxiaoyu  阅读(113)  评论(0)    收藏  举报

导航