首页 > 其他分享 >如何在40亿个数中判断某个数是否存在呢

如何在40亿个数中判断某个数是否存在呢

时间:2023-02-09 18:01:39浏览次数:40  
标签:存在 32 2563 个数 40 500MB 某个 bit

如果用set存储数据,一个整数4B,40亿个就是40*10^8*4B=16G,内存肯定装不下。
判断一个数是否存在,可以用0或1来表示,1表示存在,所以可以用一个bit来代表。可以申请2^32个bit,大概是42亿多点。1代表第一个bit,2代表第二个bit,2^32代表最后一个位。新来一个数,比如2563,就找一下第2563位,如果是0,就表示不存在(并把这个值设为1),如果是1,就表示存在。这样只需要2^32个bit,相当于2^29B,约等于500MB,所以只需要申请500MB内存。因为原来的32位整数,转化为了1位的bit,所以数据空间就是原来的1/32。这就是bitmap算法。

标签:存在,32,2563,个数,40,500MB,某个,bit
From: https://www.cnblogs.com/MarkLeeBYR/p/17106540.html

相关文章