劍指offer-例題 連續子陣列的最大和

qq_39622795發表於2020-10-04

題目描述

輸入一個整型陣列,陣列裡有正數也有負數。陣列中一個或連續的多個整陣列成一個子陣列,求所有子陣列的和的最大值,要求時間複雜度為O(n)

//動態規劃思想
public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        if(array==null||array.length==0)
            return 0;
        int[] sum=new int[array.length];//記錄以i結尾的子陣列的最大和
        sum[0]=array[0];
        for(int i=1;i<array.length;i++)
        {
            if(sum[i-1]<=0)//這個很重要
                sum[i]=array[i];
            else
                sum[i]=sum[i-1]+array[i];
        }
        int max=array[0];
        for(int i=1;i<array.length;i++)
        {
            if(max<sum[i])
                max=sum[i];
        }
        return max;
    }
    
}

 

相關文章