配列から可能な限り最小の合計を求めています。例えば配列{1,2,3,4}
の場合今私は上記の配列から最小可能な合計を見つけることを望む(1 + 2)=3
、(3+3)=6
、(4+6)=10
のように。これは3+6+10=19
につながります。最適なソリューションは何でしょうか?配列内のすべての数値を使用して最小可能合計を見つけます。
-2
A
答えて
0
最小値を見つけて削除し、最初の値が削除された後に次の最小値を見つけ出し、2つを加算します。
5
- ソートリスト低>
- 高い合計2つの最小値(
- リゾートリストにそれを追加し、
pair
は - を含ま繰り返し2-3 1まで値が最小化される総
- 合計にそれを追加し、残る
low1+low2 = pair
)、
low1
除去
low2
と総
証拠であります最適なエンコーディングのハフマンエンコードの証明JavaScriptで
0
と同じ:
let x = [1, 2, 2, 2, 3];
let y = [];
// check if we have more then 2 values left in the array
while(x[1] != undefined)
// sort to make sure we get lowest values combined
// add lowest two values, remove the second
// push result in new array
x.sort() && y.push(x[0] = x[0] + x.splice(1, 1)[0]);
// add all results
let result = y.reduce((a, b) => a + b, 0);
console.log(result);
あなたは、あなたがそれに渡すすべての配列のためにこれを行う関数を作成することができます。非常にクールなあなたは、関数型プログラミングにしている場合:どのような言語で
const array = [1, 2, 2, 2, 3];
const add = (x, y = []) => (
(x, y) => x.sort() &&
y.push(x[0] = x[0] + x.splice(1, 1)[0]) &&
x[1] ?
add(x, y) :
y.reduce((a, b) => a + b, 0))(x.slice(), y);
console.log(add(array));
// the original array is unmodified
console.log(array);
+0
私は、あなたが常に最低の2つの値を合計するために配列を利用しないので、これが最適でない値を与えることはほとんど確信しています。あなたのアルゴリズムは[1,2,2,2,3]に対して25を与えますが、最適な合計は23 –
+0
@ KevinLです。私はそれが必要条件であるとは気付かなかった。更新しました。 – Randy
関連する問題
- 1. 数字の配列内の最小合計を見つける
- 2. 配列内のすべての小数点を見つける
- 3. 配列内の最小値のインデックス番号を見つける
- 4. 関数を使用して配列から最小値と最大値を見つける
- 5. 最小配列数を使用してすべての要素をカバーする配列の組み合わせを見つける
- 6. 配列内の最小数を見つける
- 7. アセンブリ内の指定された配列の最小値を見つけます。
- 8. 配列内の値の合計を比較して最大値を調べる
- 9. Js:変数の可能な最大値と最小値を見つける
- 10. 配列内の最小値と最大値を見つけよう(
- 11. 与えられた配列内のすべてのウィンドウサイズの最小値を見つける
- 12. 合計でグループ化し、グループの日付の最小値を見つけます
- 13. 配列内の最小の数字を見つけてそれを削除してから、すべての数値を加算する方法
- 14. 配列から最小値と最大値を見つける
- 15. 8 * 720配列の各列の最小値を見つける?
- 16. forループを使用して最小値を見つけよう
- 17. vbネットコードを使用して最小値を見つける
- 18. ビット操作を使用して最小値を見つける
- 19. awkを使用して各ブロックの列で最小値を見つけよう
- 20. 配列の隣接する場所内の最小値を見つける
- 21. 配列のすべての可能なサブセットの積の合計
- 22. Javaを使用して範囲内の使用可能なワイヤレスネットワークをすべて見つけてください
- 23. 配列内の最小要素の位置を見つける
- 24. 配列のn個の最小値を見つける
- 25. 入力をリストに追加して合計し、リストの最大値と最小値を見つけよう
- 26. クレジットカードの配列の最大合計を見つける
- 27. 配列内のすべての可能な要素の組み合わせの最小の差を得る
- 28. 配列内の最小要素を見つける再帰アルゴリズム
- 29. 配列内の最小値を見つけるためのステートメントの定義
- 30. すべての数字を持つ最小長の部分配列を見つける
?どのような文脈ですか?そして何か試してみてください。何を試しましたか?あなたはインターネットを検索していますか? – Randy
私は19がどこから来るのか分かりません。その配列の合計は10です。任意の配列の最小可能な合計は最小の要素です。すべての数字を使うということは、とにかくすべてを追加する必要があることを意味します。 –
@ cricket_007 '1 + 2 = 3'、新しいリスト=' {3、3、4} '。 '3 + 3 = 6'、新しいリスト=' {4,6} 'などのようになります。 –