最大和を持つ配列内の部分配列(が少なくとも2つの数字が)を探します。 たとえば、配列[-2、-1、-3、-4、-1]を指定すると、 連続する部分配列[-2、-1]は最大の合計= -3を持ちます。入力サイズ(N)のアレイのための 公共INT maxSubArray(INT [] NUMSに){}最大の和を持つ配列内の部分配列を探します。
-2
A
答えて
0
それを解決する方法のストリームである場合、O(N)時間 フォローアップでそれを行うために 試み。別の配列Bを作成して、Farのように合計を格納することができます。 親の配列をたどります。
int max = Integer.MIN;
B[0] = A[0];
for(i=1;i<A.length;i++)
{
if(A[i] > 0){
B[i]=B[i-1] + A[i];
}else if(A[i]+B[i-1] > max){
B[i] = A[i]+B[i-1]
max = A[i]+B[i-1]
}
else{
B[i] = A[i];
}
は今アレイBでの最大数は、連続したサブアレイの最大の可能な合計を持っていますが、サブアレイを知りません。
0
Kadane's Algorithmを変更して使用することができます。
あなたはKadaneのアルゴリズムhereを見つけることができます。 (サブアレイの端も保存します)。
どうすれば変更できますか?
- >ちょうどあなたが> = 1
すなわちRIGHT-LEFTを取っているウィンドウサイズのトラックに保つ私は、これは、負を含む数字のすべてのセットのために役立つはずだと思います。
まだすべての負の数(O(n)を確認できます)。ループをからNまで:最大= max(arr [i] + arr [i + 1]、最大); ケースが覆われているかどうかを確認するだけです。このような
0
何かが動作するはずです:
int maxvalue = int.MIN_VALUE;
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++) {
int value = 0;
for (int x = i; x <= j; x++)
value += array[x];
if (value > maxvalue)
maxvalue = value;
}
return maxvalue;
関連する問題
- 1. インデックスを持つ配列の最大部分配列を見つける
- 2. 配列の最大部分集合の和を求める
- 3. 最大部分配列 - ランタイム
- 4. python入れ子リスト:最大の和を持つ部分配列を返します
- 5. ペア配列の最小の最大和
- 6. 配列の配列内で最大のオブジェクトを持つ配列を取得します。
- 7. 与えられた2次元配列の連続した部分配列の最大和
- 8. 配列の中で最大の部分を見つける
- 9. 配列の和の差が最小になるように、配列を2つの部分配列に分割しますか?
- 10. fasta配列内のヌクレオチド部分配列を見つける
- 11. RecyclerView内部配列クラスを持つ配列pojoクラスのアダプタ
- 12. 多次元配列を比較して最大値の配列を探すjavascript
- 13. 他の配列の最大値を持つ1つの配列を検索
- 14. ブールnumpy配列の部分行列の和
- 15. 配列内の配列の最初の大部分の子を取得する方法
- 16. Java 2D配列:最大値を持つ行を返します
- 17. 配列内の配列から最大値を取得する
- 18. 2つの配列で共通する最大要素を探しますか?
- 19. 配列内の部分文字列を含む文字列のインデックスを探します。
- 20. 2つの配列の要素の積の和を最大化するアルゴリズム
- 21. 大きな2D配列の内部にある2D配列を見つける
- 22. 最大の和を持つ行と列を決定する
- 23. 最大呼び出しスタックサイズが配列内の配列を超えました
- 24. 2次元配列内の隣接していない要素の最大和
- 25. 循環配列内の隣接していない数値の最大和
- 26. 配列の最大値を探し、配列が空の場合は0を返します。
- 27. 以下はPHPの配列の最大値を探す
- 28. 私は、配列内の文字列を持つ配列
- 29. PHPで配列の同じキーと値の和を持つ新しい配列を作成します
- 30. 配列の配列2D最大値
は、私たちにいくつかの努力を示してください、あなたは何を試してみましたか? – Oswald