0

100万(非常に大きい)のセットを考えると、いいえ。URLの。リストから「最初の」「一意の」URLを見つけます。

私のアプローチ:完璧なハッシュ関数を使用してハッシュを作成します。しかし、私の質問は、大きなデータをハッシュすることは不可能です。それでは、どうすればこの質問を解決できますか。

インプレースで行う方法はありますか?助けてください。前もって感謝します。

4

1 に答える 1

1

の入力リストが与えられた場合["c","a","b","a","c"]、私の最初のアプローチは次のようになります。

  1. URL のリストをタプルのリストに変換し、リスト内の各要素の位置を関連付けます。今、あなたは持ってい[(0,"c"),(1,"a"),(2,"b"),(3,"a"),(4,"c")]ます。
  2. 2 番目のタプル要素 (URL) で辞書順でリストを並べ替えます。今、あなたは持ってい[(1,"a"),(3,"a"),(2,"b"),(0,"c"),(4,"c")]ます。
  3. 後続の等しいタプル (2 番目の要素が等しい場合、タプルは等しい) のシーケンスをサブリストにグループ化します。今、あなたは持ってい[[(1,"a"),(3,"a")],[(2,"b")],[(0,"c"),(4,"c")]]ます。
  4. 長さ 1 のリストのみが存在するようにリストをフィルタリングします[[(2,"b")]]
  5. 結果のリストが空の場合、リストに固有の URL はありません。空でない場合は、最初のタプル要素 (文字列内の位置) でリストを並べ替えます。この場合、同じリストが返されます - [[(2,"b")]].
  6. リストの最初の要素を取ります。今、あなたは持ってい[(2,"b")]ます。
  7. このリストの ( only ) タプルは、最初の一意の URL と、入力リスト内の位置を示します。これは、入力リスト内のb位置2にある URL です。
于 2012-08-31T07:09:43.883 に答える