インタビューの質問16.17連続シリーズ

連続する列の最大数の和を見つけるために、整数のアレイ(負の数と正の数)で与えられ、その和を返します。

例:

入力:[-2,1、-3,4、-1,2,1、-5,4]
出力:6
説明:連続サブアレイ[4、-1,2,1]であり、最大値は6でした。

 

問題解決のアイデア:

これまでに現在のインデックスを計算し、この時の最大連続部分配列、および最大(現在の要素のサブアレイ+前の最大、0 +現在の要素):動的計画

コードの実装:

class Solution {
    public int maxSubArray(int[] nums) {
        int len=nums.length;
        int max=nums[0];
        for(int i=1;i<len;++i){
            nums[i]+=Math.max(nums[i-1],0);
        }
        for(int i=0;i<len;++i){
            if(max<nums[i]){
                max=nums[i];
            }
        }
        return max;
    }
}

 

公開された253元の記事 ウォン称賛15 ビュー30000 +

おすすめ

転載: blog.csdn.net/junjunjiao0911/article/details/104530590