合計が値になる5つの要素の配列を検索するためのアルゴリズム

JYP

[最近、同様の質問をしました。並べ替えられていない配列で、合計が1の値になり、すばらしい回答が得られた3つの要素を検索してください。ありがとうございます。:)]


次の問題を解決するためにあなたの助けが必要
です私はアルゴリズムを探しています、時間計算量はϴ(n³)でなければなりません

アルゴリズムは、(n個の整数の)ソートされていない配列を検索して、合計が指定されたzになる5つの異なる整数
探します

例:入力用: ({2,5,7,6,3,4,9,8,21,10} , 22)

出力は、true2 + 7 + 6 + 3 + 4 = 22を合計できるためのものでなければなりません


(並べ替えは実​​際には重要ではありません。複雑さに影響を与えることなく、配列を最初に並べ替えることができます。

したがって、配列がすでにソートされているかのように問題見ることができます。)

-メモリの制約なし-

-配列要素がn個の整数であることがわかっているだけです。-

どんな助けでも適用されるでしょう。

マラス

アルゴリズム:

1)初期整数のペアで構成される配列を生成し、並べ替えます。そのステップにはO(n ^ 2 * log(n ^ 2))時間がかかります。

2)初期配列から値を選択します。O(n)の方法。

3)これで、リンクされた問題と非常によく似た問題が発生します。それらの合計がz-選択された値に等しくなるように2つのペアを選択する必要があります。ありがたいことに、長さO(n ^ 2)の、すでにソートされているすべてのペアの配列があります。このようなペアを見つけるのは簡単です。3整数和問題で行ったのと同じことです。2つのポインターを作成し、両方を合計O(n ^ 2)回移動します。

O(n ^ 3)全体の複雑さ。

選択した値で構成されるペアを見つける際に、いくつかの問題が発生する可能性があります。選択した値で構成されるすべてのペアをスキップします(存在しなかったようなペアに到達したら、ポインターをさらに移動します)。

sum(p1)+ sum(p2)+選択された値= zのように、p1とp2の2つのペアがあるとします。p1とp2のすべての整数が異なる場合は、解決策があります。そうでない場合は、それが少し厄介になるところです。

p1を修正し、p2の次の値を確認してみましょう。2つの異なるペアが同じ合計を持つことができるため、p2と同じ合計になる可能性があります。もしそうなら、間違いなく、p2と同じようにp1と衝突することはありませんが、p1の他の整数と衝突する可能性があります。もしそうなら、p2の後の2番目の値もチェックしてください。同じ合計がある場合は、p1との衝突は絶対にありません。

したがって、p1またはp2と同じ合計を持つペアが少なくとも3つあると仮定すると、固定p1の3つの値をチェックするか、固定p2の3つの値をチェックするソリューションが常に見つかります。

残っている唯一の可能性は、p1と同じ合計のペアが3つ未満であり、p2と同じ合計のペアが3つ未満であるということです。最大4つの方法でそれらを選択できます-それぞれの可能性を確認するだけです。

少し不快ですが、一定量の操作でそのような問題を処理することができます。つまり、全体の複雑さはO(n ^ 3)です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの配列内の2つの要素の合計を検索するO(nlogn)のアルゴリズム

分類Dev

2つの配列の値を検索するためのアルゴリズム

分類Dev

指定された値まで合計する配列内の2つの要素を見つけるためのより良いアルゴリズム

分類Dev

配列内の要素を検索するアルゴリズム

分類Dev

ソートされた配列の部分的に絶対合計の中央値を計算するための効率的なアルゴリズム

分類Dev

配列の要素の特定の合計を複数回格納するためのアルゴリズムを見つける

分類Dev

合計値になる配列内の2つの数値を検索すると、ネストされたforループがタイムアウトします

分類Dev

合計値になる配列内の2つの数値を検索すると、ネストされたforループがタイムアウトします

分類Dev

どの値が配列から指定された数値の合計になるかを取得するアルゴリズム

分類Dev

アルゴリズム-要素の合計が0以上になるように配列の開始インデックスを見つける

分類Dev

最大合計値まで適合するように繰り返し可能な値のセットを見つけるためのアルゴリズム

分類Dev

ポイントの配列を検索するためのより良いアルゴリズム?

分類Dev

最小の大きな合計を検索するアルゴリズムの説明が必要

分類Dev

アルゴリズムの問題:5つの配列のそれぞれから1つの数値を選択し、それらの合計が2018になるかどうかを確認しますか?

分類Dev

2次元配列を検索するためのアルゴリズム

分類Dev

'a'と 'b'の値を見つけるための最適なアルゴリズムを設計する

分類Dev

配列をサブ配列に分割するアルゴリズム。すべてのサブ配列の最大合計が可能な限り低くなります。

分類Dev

2つの配列間の一意の要素を見つけるための高速アルゴリズム?

分類Dev

実数の配列の各要素の頻度を見つけるための最速のアルゴリズム?

分類Dev

配列に少なくとも1つの重複があるかどうかを判断するための最速のアルゴリズム

分類Dev

ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

分類Dev

ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

分類Dev

ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

分類Dev

要素のすべての可能な順列を把握するためのアルゴリズムを設計するにはどうすればよいですか?

分類Dev

合計がN以下のサイズLのすべての可能な配列を見つけるアルゴリズム

分類Dev

配列内のn個の異なる2次元点をカウントするためのアルゴリズムを設計するには

分類Dev

指定された文字列の文字セットを検索するための最速のアルゴリズム

分類Dev

完全な履歴が与えられた場合にスポーツの試合に勝つチームのオッズを計算するアルゴリズム

分類Dev

配列を通過するための最低価格を見つけるためのアルゴリズム

Related 関連記事

  1. 1

    2つの配列内の2つの要素の合計を検索するO(nlogn)のアルゴリズム

  2. 2

    2つの配列の値を検索するためのアルゴリズム

  3. 3

    指定された値まで合計する配列内の2つの要素を見つけるためのより良いアルゴリズム

  4. 4

    配列内の要素を検索するアルゴリズム

  5. 5

    ソートされた配列の部分的に絶対合計の中央値を計算するための効率的なアルゴリズム

  6. 6

    配列の要素の特定の合計を複数回格納するためのアルゴリズムを見つける

  7. 7

    合計値になる配列内の2つの数値を検索すると、ネストされたforループがタイムアウトします

  8. 8

    合計値になる配列内の2つの数値を検索すると、ネストされたforループがタイムアウトします

  9. 9

    どの値が配列から指定された数値の合計になるかを取得するアルゴリズム

  10. 10

    アルゴリズム-要素の合計が0以上になるように配列の開始インデックスを見つける

  11. 11

    最大合計値まで適合するように繰り返し可能な値のセットを見つけるためのアルゴリズム

  12. 12

    ポイントの配列を検索するためのより良いアルゴリズム?

  13. 13

    最小の大きな合計を検索するアルゴリズムの説明が必要

  14. 14

    アルゴリズムの問題:5つの配列のそれぞれから1つの数値を選択し、それらの合計が2018になるかどうかを確認しますか?

  15. 15

    2次元配列を検索するためのアルゴリズム

  16. 16

    'a'と 'b'の値を見つけるための最適なアルゴリズムを設計する

  17. 17

    配列をサブ配列に分割するアルゴリズム。すべてのサブ配列の最大合計が可能な限り低くなります。

  18. 18

    2つの配列間の一意の要素を見つけるための高速アルゴリズム?

  19. 19

    実数の配列の各要素の頻度を見つけるための最速のアルゴリズム?

  20. 20

    配列に少なくとも1つの重複があるかどうかを判断するための最速のアルゴリズム

  21. 21

    ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

  22. 22

    ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

  23. 23

    ユーザーが入力した2つの値に最も近い2つの値を見つけるための最も効率的な検索アルゴリズムは何ですか?

  24. 24

    要素のすべての可能な順列を把握するためのアルゴリズムを設計するにはどうすればよいですか?

  25. 25

    合計がN以下のサイズLのすべての可能な配列を見つけるアルゴリズム

  26. 26

    配列内のn個の異なる2次元点をカウントするためのアルゴリズムを設計するには

  27. 27

    指定された文字列の文字セットを検索するための最速のアルゴリズム

  28. 28

    完全な履歴が与えられた場合にスポーツの試合に勝つチームのオッズを計算するアルゴリズム

  29. 29

    配列を通過するための最低価格を見つけるためのアルゴリズム

ホットタグ

アーカイブ