私はこの質問をインタビューで使用しますが、最善の解決策は何でしょうか。
n個のリストを取得して2^ n -1個のリストを返し、どの項目がどのリストにあるかを示すPerlサブを記述します。つまり、最初のリスト、2番目のリスト、1番目と2番目のリストの両方、およびその他すべてのリストの組み合わせにのみ含まれるアイテムです。nが適度に小さい(20未満)と仮定します。
例えば:
list_compare([1, 3], [2, 3]);
=> ([1], [2], [3]);
ここで、最初の結果リストはリスト1のみにあるすべてのアイテムを示し、2番目の結果リストはリスト2のみにあるすべてのアイテムを示し、3番目の結果リストは両方のリストにあるすべてのアイテムを示します。
list_compare([1, 3, 5, 7], [2, 3, 6, 7], [4, 5, 6, 7])
=> ([1], [2], [3], [4], [5], [6], [7])
ここで、最初のリストはリスト1のみにあるすべてのアイテムを示し、2番目のリストはリスト2のみにあるすべてのアイテムを示し、3番目のリストは最初の例のようにリスト1と2の両方にあるすべてのアイテムを示します。4番目のリストはリスト3にのみ存在するすべてのアイテムを示し、5番目のリストはリスト1と3にのみ存在するすべてのアイテムを示し、6番目のリストはリスト2と3にのみ存在するすべてのアイテムを示し、7番目のリストはすべてのアイテムを示します。 3つのリストすべてに含まれています。
私は通常、この問題をn =2の場合のこの問題のサブセットのフォローアップとして提供します。
解決策は何ですか?
フォローアップ:リストの項目は文字列です。重複がある可能性がありますが、それらは単なる文字列であるため、重複は出力で潰す必要があります。出力リスト内のアイテムの順序は重要ではなく、リスト自体の順序も重要です。