私はこれらの線に沿ってインタビューの質問をしました:
注文されていない顧客のリストが2つある場合、2つのリストの共通部分のリストを返します。つまり、両方のリストに表示される顧客のリストを返します。
私が確立したいくつかのこと:
- 各顧客が一意の名前を持っていると仮定します
- 両方のリストで名前が同じである場合、それは同じ顧客です
- 名前は、名、名前、名前の形式です。
- II、Jr、変なキャラクターなどのトリックはありません。
重要なのは、これを可能な限り効率的に行うための効率的なアルゴリズム/データ構造の使用を見つけることだったと思います。
私の進歩は次のようになりました:
- 1つのリストをメモリに読み込んでから、他のリストを一度に1つずつ読み取り、一致するものがあるかどうかを確認します。
- 両方のリストをアルファベット順に並べてから、一方のリストの先頭から始めて、各アイテムがもう一方のリストに表示されるかどうかを確認します
- 両方のリストを順序付きリストに入れ、短いリストを使用してアイテムごとにチェックします(つまり、1つのリストに2つのアイテムがあり、それらの2つのアイテムのみをチェックします)
- 一方のリストをハッシュに入れ、もう一方のリストのキーの存在を確認します
インタビュアーは「次は?」と尋ね続けたので、何か他のものが欠けていると思います。
これを効率的に行うための他のトリックはありますか?
ちなみに、この質問はPythonで行われたもので、私sets
はこれについてできるだけ効率的に実行しているようです。データ構造/アルゴリズムが何であるかについて何か考えsets
はありますか?