2010-12-17 3 views
2

可能性の重複:すべての
Find existence of number in a sorted list in constant time? (Interview question)Mより大きいN個の数値のソートされたリストが与えられている場合、M >> Nは与えられた数の存在しないものを見つけるか、または決定します。可能であれば一定の時間ですか?

まず、私はこれが本当の面接の質問であるかはわかりません。私はこれがGoogleのインタビューの質問であると主張するウェブサイトでそれを見つけました。それを言って、それはかなり興味深いように見えたので、私はそれをここに置くように感じました。

それはかなり上です。 M >> N、Nは複数のディスクにまたがる大きさのM以上のN個の数値のソートされたリストが与えられます。

O(logN)に特定の番号が存在しないことを検出または判断する必要があります。これは、より小さなデータセット(バイナリ検索)の場合はまっすぐです。複数のディスクにまたがるデータセットの場合、これははるかに難しいようです。また、O(1)解には余分な点があるとも言われています。何か案は?

私は質問hereを見つけました。

+3

「複数のディスクが」赤ニシンです:

は、例えば、このブログを参照してください。メモリと同じアルゴリズムが適用可能ですが、かなり大きな定数によって遅くなります。 – starblue

答えて

0

「O(logN)より速い」ソリューションは、各ディスクを並行して検索することだと思います。データはソートされているので、関心のある番号がディスクの2つのエンドポイントを見ていることがわかります。次に、このディスクをバイナリサーチして、ディスクの数をDとすると、O(log(N/D))解を与えます。

質問が現在どのように表現されているかを示す一定の時間の解はありません。私は著者ができるだけ短く質問を投稿する際にいくつかの細部を除外したと思う。

0

私たちは数(M)の範囲を知っているので、補間されたバイナリ検索を実行できます。検索範囲をN /(HI-LO)で1/2に二等分するのではなく、結果は依然としてO(log N)になりますが、定数は低くなります。このテクニックは、データに重複がないことがわかっていればうまく機能します。問題はそのようなことを示唆しているようですが、確定的ではありません。 Faster than Binary Search

関連する問題