30
与えられたものに40億でない整数を生成する
私はこのインタビューの質問を与えられました: 入力ファイルに40億の整数が含まれている場合、ファイルに含まれていない整数を生成するアルゴリズムを提供します。1 GBのメモリがあるとします。メモリが10 MBしかない場合の対処方法をフォローアップします。 私の分析: ファイルのサイズは4×10 9 ×4バイト= 16 GBです。 外部ソートを実行して、整数の範囲を知らせることができます。 私の質問は、ソートされた大きな整数セットで欠落している整数を検出する最良の方法は何ですか? 私の理解(すべての回答を読んだ後): 32ビット整数について話していると仮定すると、2 32 = 4 * 10 9個の異なる整数があります。 ケース1:1 GB = 1 * 10 9 * 8ビット= 80億ビットのメモリがあります。 解決: 1つの異なる整数を表す1ビットを使用すれば十分です。ソートは必要ありません。 実装: int radix = 8; byte[] bitfield = new byte[0xffffffff/radix]; void F() throws FileNotFoundException{ Scanner in = new …