配列の要素の範囲に関する情報を持たない2つの整数配列があります。私が知っているのは、2つの配列mとnの長さです。今度は両方の配列にいくつかの重複があります。私は両方の配列から最低の共通複製を探したい。私はメモリが限られていると仮定し、これをどのように解決するのですか?配列内の共通の重複を見つける
答えて
MergeSortアルゴリズムがこの問題を解決するのに役立つ場合があります。 MergeSortアルゴリズムは、基本的にリスト内の要素をソートするためのものですが、その主要な要点は、Divide and Conquer Approachです。あなたは記憶が限られていると述べているので、Divide and Conquerは問題を解決するための合理的なアプローチのようです。
1つの可能な方法(これはおそらくメモリとパフォーマンスの両方を行うより効率的な方法です)。
- 第1および第2の配列に対して2つの
map
インスタンスAおよびBを作成します。key
は整数であり、value
はそれぞれの配列の整数です。 - 値がAとBの両方に2未満
- の両方Aのキーセットを取るある
(key,value)
ペアを削除 - 従って両方の配列内の各整数の出現回数をカウントし、マップAに格納し、B Bと交差点を見つける。
私はステップを理解しましたが、静的ハッシュテーブルがあれば、キーと値のペアをどのように削除しますか?ハッシュテーブルから削除するときに発生するパフォーマンス上の問題はどれくらいのものがあるのでしょうか?または、この問題が動的ハッシュテーブルに依存することを意味しますか? – user754740
削除ステップの代わりに、実際にはハッシュテーブルをたどってキーを値2以上のセットに集めてハッシュテーブル全体を破棄することができます。 – Timo
- 1. 配列内の最も重複したオブジェクトを見つける
- 2. 配列内の重複する値のインデックスを見つける方法
- 3. Angular2/Ionic - 配列内の重複アイテムを見つけて整理する
- 4. 配列内の値を見つける
- 5. 配列内のモードを見つける
- 6. NSMutable配列内の複数の値を見つける
- 7. Java - 複数の配列で重複したエントリを見つける
- 8. ツリー内の共通のサブツリーを見つける
- 9. 異なる間隔内の共通点を見つける
- 10. 配列内の重複キー
- 11. 文字列配列から重複する値を見つける
- 12. iPhoneアプリの重複を見つける
- 13. C#データの重複を見つける
- 14. PostgreSQLの配列列内の文字列を見つける
- 15. Python - リスト内の重複アイテムを見つけて破棄する
- 16. 配列 - 配列内に見つからない数字を見つける
- 17. 配列内の値を1つずつ見つける
- 18. 重複する円を見つける
- 19. プロパティファイル内で重複するキーと値を見つけるツール
- 20. 重複を見つけるアルゴリズム
- 21. 配列内の文字列を見つける
- 22. MATLABで構造体の2つの配列の共通部分を見つける
- 23. パンダ内の別の列に個別の値に対して1列に共通の値を見つける
- 24. 文字列に重複した項目を見つける
- 25. 共起行列を見つけるアルゴリズム
- 26. 配列内の数字のシーケンスを見つける
- 27. 配列内の最小要素の位置を見つける
- 28. 数字の配列内の最小合計を見つける
- 29. numpy配列内の値リストのインデックスを見つける
- 30. 整数配列内のループの長さを見つける
マージソート、マージ手順にソートするために余分なスペースを必要と答えている交差点で最も低いキーを、見つけます。したがって、この問題では、元の配列をソートするために2つの中間配列が必要になります。しかし、ソート後も、どのようにして両方の配列から共通の複製を識別できますか?それ以上のバッファを消費することなく処理できますか? – user754740
あなたが言ったことはソートの文脈で真ですが、言及したように、重複を探していて、配列1の特定の要素が配列2に存在するかどうかをチェックするだけです。したがって、もっとバッファを必要としないと思います。 –
配列が最初にソートされていないことを明確にしたいと思います。配列をソートするとarray1の要素をチェックしてarray2にあると言っていますか? – user754740