[アルゴ] 489最大のサブアレイの合計

ソートされていない整数配列を考えると、最大の合計を持っている部分配列を見つけます。合計サブアレイの左右の境界のインデックスを返します。複数の解決策がある場合は、左端の部分配列を返します。

仮定

  • 指定された配列がnullでなく、少なくとも1の長さを有します。

  • {2、-1、4、-2、1}は、最大サブアレイ和は2 +(-1)+ 4 = 5の左右の境界のインデックスはそれぞれ0と2です。

  • {-2、-1、-3}、最大サブアレイ和が-1です。左右の境界のインデックスはともに1

 

[右、左、和]として配列で結果を返します

 

パブリック クラスソリューション{
   公共 のint [] largestSum(INT []配列){
     // ここにあなたのソリューションを書く
    場合(配列== nullの || Array.lengthと== 0 ){
       戻り配列; 
    } 
    INT GLOBALMAX =はInteger.MIN_VALUE、globalLeft = 0、globalRight = 0 int型は = 0を残しましたINT []合計= 新しい int型[Array.lengthと]。
    以下のためにINT I 0 =; I <Array.lengthと; I ++ ){
         場合(I == 0 ||和[I - 1 <= 0){
          和[I] = 配列[i]は、 = I; 
        } { 
          和[I] =和[I - 1] + 配列[i]は、
        } 
        もし(和[I]> GLOBALMAX){ 
          GLOBALMAX = 和[I]。
          globalLeft = 左; 
          globalRight = I; 
        } 
    } 
    戻り 新しい INTを[] {GLOBALMAX、globalLeft、globalRight}。
  } 
}

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/12602776.html