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

2021-09-11 12:48:54 字數 477 閱讀 8031

如果直接迴圈遍歷的話有兩個問題,一是時間太久,二是如果直接用整數表示40億個整數的話,按照乙個整數4個位元組的話需要大概16g的記憶體。所以原文中有個思路:

申請40億個位就好,新的數轉換成乙個位,比如如果是5那麼第5位(從0開始)就是1,如下:

000000000000000.....00100000,40億個位大概500m,存完之後比如來乙個數5,發現第五位是1,那麼5是存在。演算法雖然出來但是具體怎麼實現呢?其實到了這一步我們肯定要想到位運算,talk is cheap,show me the code.**很簡單,如下:

public class testbitmap 

private static void getbitshift(int factor)

private static void test(int factor) else }}

複製**

怎麼樣是不是很簡單!

面試 如何判斷乙個數是否為奇數?

最開始我寫的是 return num 2 1 但發現好像忘了負數.所以改為了 return num 2 0 我以為這就解決了問題,但我習慣性檢視答案時,卻發現答案用了乙個奇怪的方法 return i 1 1 這是啥東西,冷靜下來想了一會,哦哦哦.答案是直接當做二進位制進行了運算,因為二進位制狀態下,...

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

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

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

40億個不重複無符號整數,沒排序,任意給乙個無符號整數如何快速判斷這個數是否在這40億個數中。思路 點陣圖bitmap 在stl中叫bit set 節省空間 缺點只判定存在還是不存在,不能知道出現幾次。void set size t x x對應位置1 a index 1 cout void rese...