私は 2 つのコレクションを持っています (それらはたまたま配列ですが、実際には問題ではないと思います):L
とR
. どちらもソートされているので、比較したいと思います。最終的に 2 つのコレクションを作成したいと考えています。1 つは入力配列ごとに 1 つは、もう一方にはなかった項目を含む配列です。
から最初のアイテムを取得してL
検索R
し、一致するものがない場合は、それを「一意の」コレクションに追加することができます ( Lu
)。しかし、それは非常に非効率的であり、近い将来、非常に大きなコレクションを処理する必要があると予想しています。
私はおそらく「石けり遊び」について考えました:
ステップ 1: 2 つのリスト と を取り
L
、各リストの先頭 (と)R
を比較します。l :: L
r :: R
分岐 1:
l
<の場合r
、 に追加l
して再帰し、とLu
を渡すL
r :: R
分岐 2:
l
>の場合r
、 に追加r
して再帰し、とRu
を渡すl :: L
R
分岐 3:
l
=r
の場合、再帰的に渡してL
、R
Lu
ステップ2: 戻るRu
私はこの関数を書くことができますが、努力する前に、これを行うことができる関数が既に存在するかどうか疑問に思っていました. これは珍しくないシナリオのように思えます。私は常に、既存のソリューションを使用して独自のソリューションを展開したいと考えています。
(また、このアルゴリズムにもっとわかりやすい名前があれば、それが何と呼ばれているのか知りたいです。)