42.連続部分配列と最大フェイス質問

整数配列を入力し、配列は、正にも負を持っています。一つまたはサブアレイからなる複数の連続整数配列。全てのサブアレイの最大値を求めると。

所要時間の複雑さはO(n)があります。

 

例1:

入力:NUMS = [-2,1、-3,4、 -1,2,1、-5,4]
出力:6
説明:連続サブアレイ[4、-1,2,1]、および最も6。

 

ヒント:

1 <= arr.length <= 10 ^ 5
-100 <= ARR [I] <= 100
注:同じ問題が存在するタイトル53及びマスタ局:HTTPS://leetcode-cn.com/problems/maximum-subarray/

問題解決のためのアイデア(動的計画法):

最大:最大値と第1の素子のサブアレイ、初期値、合計:現在のサブ配列と最初の要素の初期値。

アレイを介して、合計の電流値が決定され、0未満であれば、最初から現在の要素が再び蓄積され、最大の値を更新します

コードの実装:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int len=nums.size();
        int max=nums[0];
        int sum=max;
        for(int i=1;i<len;++i){
            if(sum<0){
                sum=0;
            }
            sum+=nums[i];
            if(max<sum){
                max=sum;
            }
        }
        return max;
    }
};

 

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

おすすめ

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