給40億個不重複的 unsigned int 的整數,然後再給乙個數,如何快速判斷這個數是否在那40億個數當中?
40億個int型的整數,大約需要16g,很顯然記憶體放不下,可以考慮一下位圖法,用乙個bit為來表示乙個數是否存在,0表示不存在,1表示存在,40億個位元組型的資料大約需要4g,乙個位元組有8位元,如果用乙個位元位表示乙個數,大約需要512m,所以是可行的。
class
bitmap
private
void
init()
public
void
setbit
(long number)
public
boolean
contains
(long number)
}
如何判斷乙個數是否在40億個整數中?
題目 我有40億個整數,再給乙個新的整數,我需要判斷新的整數是否在40億個整數中,你會怎麼做?請教大神 小史回到學校,把面試的情況和計算機學院的呂老師說了一下。小史忙拉著呂老師問,為什麼我說分8次載入資料,面試官會說太慢了呢?呂老師 哈哈,從磁碟載入資料是磁碟io操作,是非常慢的,你每次都要載入這麼...
面試現場 如何判斷乙個數是否在40億個整數中?
如果直接迴圈遍歷的話有兩個問題,一是時間太久,二是如果直接用整數表示40億個整數的話,按照乙個整數4個位元組的話需要大概16g的記憶體。所以原文中有個思路 申請40億個位就好,新的數轉換成乙個位,比如如果是5那麼第5位 從0開始 就是1,如下 000000000000000.00100000,40億...
《筆試》《面試》判斷乙個數是否在40億個中
40億個不重複無符號整數,沒排序,任意給乙個無符號整數如何快速判斷這個數是否在這40億個數中。思路 點陣圖bitmap 在stl中叫bit set 節省空間 缺點只判定存在還是不存在,不能知道出現幾次。void set size t x x對應位置1 a index 1 cout void rese...