私はHWのためにこの質問を受け取りました。それを行う方法を理解できません:
配列A [1 ... n]は0からnまでのすべての整数を1つ。配列はソートされません。
この問題では、1回の操作でAの整数全体にアクセスすることはできません。
Aの要素はバイナリで表現されており、それらにアクセスするために使用できる唯一の操作は「一定の時間を要するA [i]のj番目のビットをフェッチする」ことです。ランタイムをO(n)に減らす
O(n)時間に欠落している整数を見つけなければなりません。
普通にかかる時間は、O(NlgN) です(N配列で実行し、N - lgnビットの関数であるすべてのビットをフェッチします)。
すべてのビットを読み取らないとどうすればできますか?
アレイはソートされていますか? – Marcin
他のプロパティはありますか?例えば。配列内の数字は順序付けされていますか?そうでなければ、各ビットを少なくとも一度は見ないと不可能です。 – flolo
いいえ、配列はソートされません。 – sara