[解決済み] リストにない最小の整数を求める
2023-04-03 06:29:14
質問
私の同僚が使っている面白いインタビューの質問です。
非常に長い、ソートされていない符号なし64ビット整数のリストが与えられたとします。を満たす最小の非負の整数をどのように見つけますか? は が発生する最小の非負整数をどのように見つけるか?
フォローアップ:ソートによる明白な解決策が提案されたので、O(n log n)よりも速くそれを行うことは可能でしょうか?
フォローアップ:あなたのアルゴリズムは、例えば1GBのメモリを持つコンピュータ上で実行されなければなりません。
明確化:リストはRAM上にありますが、それを大量に消費する可能性があります。あなたは事前にリストのサイズ、例えばNを与えられています。
どのように解決するのですか?
もしデータ構造がその場で変更可能で、ランダムアクセスをサポートしているならば、O(N)個の時間とO(1)個の追加スペースで実行可能です。配列を順次調べ、すべてのインデックスについて、インデックスにある値を値で指定されたインデックスに書き込み、その場所にあるすべての値を再帰的にその場所に置き、値 > N を捨てます。この結果、最大で 3N の比較となり、一時的なスペースは数個の値しか使用しなくなります。
# Pass 1, move every value to the position of its value
for cursor in range(N):
target = array[cursor]
while target < N and target != array[target]:
new_target = array[target]
array[target] = target
target = new_target
# Pass 2, find first location where the index doesn't match the value
for cursor in range(N):
if array[cursor] != cursor:
return cursor
return N
関連
-
[解決済み] Rで3D行列をセットアップし、特定の要素にアクセスする
-
[解決済み] 数値の配列の和の求め方
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] JavaScriptのオブジェクトの配列からidでオブジェクトを検索する
-
[解決済み] 配列の最後の項目を取得する
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] 40 億の整数以外の整数を生成する。
-
[解決済み】リンクリストのループを検出する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン