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