Xiaoqiuはしかし、最近Xiaoqiuが多いと学習、これらの日にインタビューするビットのアルゴリズム、例えば、関連記事を
[インタビュー]サイトの数が40億個の整数であれば伝えるためにどのように?
[アルゴリズム]ガイドを強制的にロードされたビット・コンピューティングのスキルを
アルゴリズムの問題のために、それはまだ少し自信ある,,,,ので、次のような対話を発見しました。
20億のレベル
インタビュアー:私はメモリのあなたに2ギガバイトを与え、あなたに20億のint型の整数を与える場合、あなたはどのように行うだろう、出現の最大数を見つけるためにあなたを聞かせて?
それでも、ビットマップのアルゴリズムを使用している場合、私は感じてどのようにXiaoqiu :(ああ?その40億個の整数で少し異なる番号があるかどうかの決意の前にその道路は?しかし、それだけで判断することができ、数が表示された回数をカウントすることは困難と思われますそこかどうかの数)、私は統計にハッシュテーブルを使用できる回数は、この数が値として表示され、キーとしてこの数は、その後、私は、ハッシュテーブル、それまでの出現回数の最大値を通過するでしょう。
インタビュアー:あなたはあなたが必要とするこの方法で、どのくらいのメモリの下に数えることができますか?
Xiaoqiu:キーと値の整数型intあり、int型はメモリの4Bを占めているので、記録ハッシュテーブル8Bを占有する必要があるが、最悪の場合には、20億数は、おそらく、別の番号であります16GBのメモリを取ります。
インタビュアー:あなたの分析が正しいですが、私はあなたのメモリの唯一の2ギガバイトを与えるでしょう。
Xiaoqiuは:(この質問はやや似て感じですが、私はクール下)なぜ、何も考えて、知らない、何より良い方法はありません。
インタビュアー:あなたはその方法に従ってください、それだけで200の以上の万レコード、レコードの2億の以上の異なる部分、メモリのおそらく1.6ギガバイトの異なる部分について記録することができます。
Xiaoqiuは:(ああ?インタビュアーが、これは私を促した?)私は少し考えている、私は20億数が異なるファイルに保存され、その後、再びスクリーニングされて置くことができます。
インタビューの質問:あなたは、具体的について話していただけますか?
Xiaoqiu:ちょうど今、あなたは私の方法は、唯一例えば、0から200000000値に、私は別のファイルの数にマッピングされた20億を置くことができ、異なるバーに関する200の以上の万レコードまで記録することを言いました1との間に42億の異なる数約int型の整数ので、2 ....値がファイルに400000000から200000000の間に配置され、ファイルに格納されているので、私は21にマップすることができどこへ行くのファイル、など
明らかに、同じ番号が同じファイルになります、私たちは、私の方法は、各ファイルの数の統計情報の最大数は、最大数から選択されるものの、その後数もう一度、それを表示され、この時間を使用することができますそれは。
インタビュアー:ああ、この方法は本当に良いですが、この番号2000000000は私が値ならば、そして、例えば、100万〜20の範囲で、より集中している、あなたは、あなたが持っている、それらすべてが同じファイルにマッピングされて置きます心の最適化?
Xiaoqiu:私は最初に行う各番号を置くことができ、ハッシュ関数マッピングを取得するハッシュ関数のハッシュ値に応じて、および設計へのハッシュ関数は、その後、数良好であれば、彼らは、対応するファイルに格納されていますそれは、より均等に分散されます。(ハッシュ関数の設計のために、私はちょうどアイデアを提供することを、言うことはありません)
40億レベル
インタビュアー:私は20億数は数40億、それに追加された何置けば?
Xiaoqiu :(これは単純ではない、42個のファイルにマッピングされた聖歌)私はファイルああの数を増やすことができます。
インタビュアー:私は値にそれを数40億を与えた場合と同じです何を、そしてあなたのハッシュテーブルは、キーに格納されている数値は40億になりますが、最大値は21億intでまたはそう、その後、オーバーフローがあるでしょう、あなたはどのように行うのですか?
私はそれは、より多くのメモリを取るだろう、私は唱え、数分以上のファイルを置くことができますが、長い読む必要はありませんXiaoqiu :( intが、しかし、これは、私ができる)インタビュアーが答えを望んではありません割り当てられた値の初期値は負の21億、数値21万人ならば、次いで、42億回登場キーを表すように。
ここでは、つまり、ファイルの21種類は、あなたがコントロールの2億種類の各ファイルの値を置くことができるので、文書または21は、十分にあり、注意してハッシュテーブル、または全くない200万人以上に保存されたレコード。
80億レベル
インタビュアー:ハ応答非常に迅速に、私は4000000000から8000000000それを置きますか?
Xiaoqiuは:(私が)、これはああ激化、頼りに、私は統計の過程にいる場合.........私が知っている、私は再び裁判官ああを横断しながら、私たちは40歳以上の新興キーの番号を見つけたことができます万回、それが再びそれは見た目よりも別のキー倍以上を持っていないだろう、と私は、キーを取得するために直接返されます置きます。
インタビュアー:OK、このインタビューが終わって、戻って、このような通知にそれを行きます。
概要
今日のデータ処理に関連する問題の多数についてこの一節、後者はまた、あなたには、いくつかの類似したが、異なるアプローチのタイトルルを探して与えることは、あなたが良い感じている場合、したいことがあります。
あなたはより多くの人々が、この記事を見てみましょうし、あなたを刺激するのは非常にコンテンツこれを見つけた場合:希望
1、親指、より多くの人々がこのコンテンツを見ることができるように(収集場所がない賞賛、いじめ-_-)
2、私のコラムに注意を払うと、私たちは長期的な関係であるとします
3号国民の関心「ハードコード農家を強制的に主にアルゴリズムを記述するために、」、100以上のオリジナルの記事が掲載されています記事、などの基本的なコンピュータ
データ構造とアルゴリズムの記事のほとんどは、様々な公共の数は、あなたが何かを得ることを可能にすると信じて復刻した
、あなたの注意のための私の記事を読んで初めてあなたを歓迎するために、私はまた、リソース、ビデオ、書籍、および開発ツールの多くを共有しています。