letecode [53] - 最大サブアレイ

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

例:

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

効果の件名:

  アレイ与えられ、最大連続サブ配列を発見し、最大値を返します。

理解:

  初期最大値と最大値、および一時的な値のNUMSの合計[0]。

  合計<0、次の数NUMS [i]は和、NUMSの和リセット[I]よりも大きい場合場合。

  場合和> 0、直接次NUMS [I]を添加する数。

  常に最大の合計値と最大値の比較、更新最大値にする必要があります。

コードC ++:

クラス解決{
 パブリックINT maxSubArray(ベクトル< INT >&NUMS){
         int型 N = nums.size()。
        もし(N == 0戻り 0 ;
        int型 maxは= NUMS [ 0 ]、和= NUMS [ 0 ]、I。
        (i = 1 ; iがn <; ++ I){ 
       
場合(合計< 0 &&和< NUMS [I]){ 合計 = NUMS [I]。 もし(最大<合計)最大= 合計。 持続する; } =和+ NUMS [I]。 もし(最大<合計)最大= 合計。 } であれば(MAX <和)MAX = 和。 戻り値の最大値。 } }。

結果:

  12:で実行すると  MSの   メモリ消費量:  9.4メガバイトを

おすすめ

転載: www.cnblogs.com/lpomeloz/p/10972182.html