構造は{{Dog,Cat,Human},{Human,Dog,Whale,rabbit,Cow},{Monkey,Human,Dog}}
です。2つ以上の交差する方法のリストを交差させる代わりに?
出力は、Dog,Human
である必要があります。
私は大きなリストの中でリスト要素の共通部分を見つけなければなりません。以前は、私は別のArrayLists
の交差点を見つけるコードを見ましたが、同じArrayList
(2つ以上)の中でどうやってそれを行うことができるかわかりません。
別途ArrayLists
次のようなコードです。しかし、どのように私はそれが複数のArrayLists
の中でより大きくなるようにしますかArrayList
?私はインタビューでこれを尋ねられました。別のリストのために働いたが、同じArrayList
のためにそれをチョークアウトできませんでした。
インタビュアーは文字列のみで動作することを明示していたので、説明の後に汎用タイプのトークンを{<T>}
から{<String>}
に変更しました。
これにより、2つの別々のArrayLists
に対して正しい出力が生成されます。しかし、入力がわずかに変更された場合、例えば、交差方法は入力a,a,a
とa,a,
に対してa,a,a
を返しますが、a,a
とa,a,a
の場合はa,a
となります。論理的な前提は、パラメータの順序にかかわらず常にa,a
を返すことです。
入力順に関係なくこれをどのように修正できるかについてのご意見はありますか?そして、どのように私は複数のリスト(2つ以上)の交差点を1つの大きなリストの中に見つけることができましたか?
で繰り返し交差点メソッドを呼び出すで、あなただけの繰り返しリストとの交点を見つけることができますその交差点が返され、新しいリストが返されます。機能指向言語では、 'intersection'を使ってリストのリストを折りたたんだり縮小したりするだけです。 – Carcigenicate
リストがソートされている場合は、ジッパー技術を使って 'O(n)'に実装することができます。各リストには、最初はインデックス0にマーカーを配置します。すべての値を比較し、異なる場合は、より小さな値を示すすべてのリスト上でマーカーを進めます。マーカーがリストの終わりに達するまで続けます(1つは交差のために十分です)。 *情報検索*の一般的なトリック。 – Zabuza