サイズの異なる 2 つの配列の共通要素を取得する最善の方法を見つけなければなりません。
配列は順不同です。共通要素は異なる位置にありますが、同じ順序 (配列 A で共通要素bがaの後に来る場合、配列 B でも同じことが起こります) で、最大距離 N です。
O(N) の追加スペースを使用することはできません。
実際には、配列 A から N 個の要素を抽出し、それらをマージソートで並べ替え、配列 B の N 個の要素を使用して 2 分探索を実行します。次に、見つかった一致の位置から次の N 個の要素を取得し、別のサイクルを実行します。
このコストは、配列 B の長さとしてmを使用すると、O(m N log N) になります。
ハッシュテーブルを使用してみましたが、衝突を管理するにはリストを実装する必要があり、効率が低下します。
より良い方法はありますか?