最大区间和的求法(基于前缀法)

  我们常常遇到这样的问题,比如现在我们要找到下面这个数组中的最大连续和的问题。

数组:[2,-3,4,-1,-2,1,5,-3,1,1]

public class Test7 {
    public static int ss(int a[]){
        //如果全为负数返回0
        boolean flag=false;
        for(int i=0;i<a.length;i++){
            if(a[i]>0){
                flag=true;
            }
        }
        if(!flag){
            return 0;
        }

        int dp=Integer.MIN_VALUE,ans=Integer.MIN_VALUE;
        for(int i=0;i<a.length;i++){
            dp=Math.max(a[i],a[i]+dp);
            ans=Math.max(ans,dp);
        }
        return ans;
    }

    public static void main(String args[]){
        int[] a={2,-3,4,-1,-2,1,5,-3,1,1};
        System.out.println(ss(a));
    }
}

运行结果:

猜你喜欢

转载自www.cnblogs.com/appleple/p/11928266.html