LeetCode幸せブラシタイトル28日--53。最大サブアレイ

今日では、私の人生は問題解決の少しchaotic.Theの進展が鈍化しています。私は積極的に将来的には私の状態を調整し、毎日完了しなければならないタスクを完了することを願って

53.最大サブアレイ
イージー

整数配列を指定し  nums、最大の和を有し、その和を返す(少なくとも1つの数を含む)の連続部分配列を見つけます。

例:

入力:[-2,1、-3,4、-1,2,1、-5,4]、
出力:6 
説明:[4、-1,2,1]最大の和= 6を有します。

ファローアップ:

あなたはO(考え出した場合はn個)のソリューションを、より微妙である、除算を使用して、別のソリューションをコーディングしようとするアプローチを征服します。

このprobemは簡単で、私はDPについてのクラスの話を聞いた後、私はまだ答えを見つけ出すことはできませんダイナミックprogram.Butに属します。

私の現段階では、唯一の問題とのより多くの接触を行うことによって、私は最終的に自分で問題を解決する能力を養うことができます。そのため、戦いの形成は、「迅速かつ迅速に」ではなく「長引く」でなければなりません。

BONUS:
1.vectorはスペースのサイズを初期化します

 

ベクター< INT > F(nums.size())。

 

2.vector max値は、max_elementの前に*を追加することを忘れないでください、関数を呼び出すことができ、値の型が異なっています

 

* max_element(f.begin()、f.end())

 

完全なコードC ++:

する#include <stdio.hに> 
する#include <iostreamの> 
する#include < ストリング > 
の#include <ベクトル> 
の#include < 設定 > 
の#include <地図> 
の#include <アルゴリズム>
 使用して 名前空間STD。
// 著者:Huahua
 // ランタイム:3ミリ秒
クラスソリューション{
 パブリックINT maxSubArray(ベクトル< INT >&NUMS){ 
        ベクトル < INT > F(nums.size())。
        F [ 0 ] = NUMS [ 0];
        以下のためにint型 i = 1 ; i)は(nums.sizeを<; iは++ 
        { 
            F [I] = MAX(F [I- 1 ] + NUMS [i]は、NUMS [I])。
        } 
        戻り *のmax_element(f.begin()、f.end())。

    } 
}。

INT メイン()
{ 
    溶液S。
    ベクター < INT > NUMS = { - 21、 - 34、 - 121、 - 54 }。
    int型RES = s.maxSubArray(NUMS)。
    coutの << RES << てendl;
    リターン 0 ; 
}

Pythonのバージョン:

ARR =入力("" 
NUMS [INT(N)= ための N における(arr.split " " )]
 プリント(NUMS)
 #1 NUMS = [ - 2,1、-3,4、-1,2,1 、-5,4]

すべてのpython入力はanything.Numsは、forループによって割り当て値にすることができ書く必要はありませんが、配列のスペースで分割されarray.if入力を分割する「」文字列なので、直接入力され、it.Useを扱います。

完全なコードPythonのバージョン:

注意:最小値のセットが-2147483647を使用する必要があり、これは、int型の最小値であり、

クラス溶液(オブジェクト):
     DEF maxSubArray(自己、NUMS):
         "" " タイプNUMS:リスト[INT] 
        :RTYPE:INT 
        """ 
        ローカルから> L、global-> Gの 
        L = G = -2147483647 のためのNUMS:
            L = MAX(I、L + I)
            G = MAX(G、L)
         リターングラム
ソル = ソリューション()
ARR =入力("" 
NUMS = INT(N)のn における arr.split(" " )]
 印刷
        

(NUMS)
 #1 NUMS = [ - 2,1、-3,4、-1,2,1、-5,4] 
プリント(solu.maxSubArray(NUMS))

Theroy:

変数Lはローカル、gはグローバル手段、NUMSの各変数は、上記および現在の要素大きい一方がローカル最大であり、世界最大であるとローカルマックス&グローバル最大、大きなものを比較の合計を比較します。

おすすめ

転載: www.cnblogs.com/Marigolci/p/11306535.html