《筆試》《面試》判斷乙個數是否在40億個中

2021-07-13 03:09:25 字數 680 閱讀 8708

40億個不重複無符號整數,沒排序,任意給乙個無符號整數如何快速判斷這個數是否在這40億個數中。

思路:(點陣圖bitmap)     在stl中叫bit_set 節省空間;缺點只判定存在還是不存在,不能知道出現幾次。

void set(size_t x)//x對應位置1

_a[index] |= 1 <

//cout <

} void reset(size_t size)  //清空size對應的位

bool test(size_t size)//檢測size是否存在,也就是檢測size對應位是否為1

return false;

}protected:

vector_a;

size_t _size;//表示表中元素個數

面試現場 如何判斷乙個數是否在40億個整數中?

如果直接迴圈遍歷的話有兩個問題,一是時間太久,二是如果直接用整數表示40億個整數的話,按照乙個整數4個位元組的話需要大概16g的記憶體。所以原文中有個思路 申請40億個位就好,新的數轉換成乙個位,比如如果是5那麼第5位 從0開始 就是1,如下 000000000000000.00100000,40億...

判斷乙個數是否在40億個整數中

給40億個不重複的 unsigned int 的整數,然後再給乙個數,如何快速判斷這個數是否在那40億個數當中?40億個int型的整數,大約需要16g,很顯然記憶體放不下,可以考慮一下位圖法,用乙個bit為來表示乙個數是否存在,0表示不存在,1表示存在,40億個位元組型的資料大約需要4g,乙個位元組...

如何判斷乙個數是否在40億個整數中?

題目 我有40億個整數,再給乙個新的整數,我需要判斷新的整數是否在40億個整數中,你會怎麼做?請教大神 小史回到學校,把面試的情況和計算機學院的呂老師說了一下。小史忙拉著呂老師問,為什麼我說分8次載入資料,面試官會說太慢了呢?呂老師 哈哈,從磁碟載入資料是磁碟io操作,是非常慢的,你每次都要載入這麼...