質問: 200万ビットが必要です。 65536個のバケツを作る必要があります。最悪の場合は40億の整数がすべて同じバケットに属しているため、バケットごとにすべての可能性を保持する4バイトが必要です。 ファイルを最初に通過して各バケットのカウンターを作成します。 バケットをスキャンし、ヒット数が65536未満の最初のバケットを見つけます。 ステップ2でファイルの2回目のパスまでで見つかった高位16ビット接頭部を持つ新しいバケットを作成します。 手順3で作成したバケットをスキャンし、ヒットしなかった最初のバケットを見つけます。 コードは上記のものと非常によく似ています。 結論:ファイルパスを増やすことでメモリを削減しました。遅く到着した人への説明:質問によれば、ファイルに含まれていない整数が1つだけあるということではありません。ただし、コメントスレッド内の多くのコメントは、そのタスクのバリエーションについてです。残念ながら、コメントスレッドにそれを導入したコメントは、後でその作者によって削除されました。とても混乱します。ごめんなさい。
回答: ファイルから空白と数字以外の文字を削除し、1を追加します。これで、元のファイルにリストされていない単一の番号がファイルに含まれます。 carbonetcによるredditから。