题目:我有 40 亿个整数,再给一个新的整数,我需要判断新的整数是否在 40 亿个整数中,你会怎么做(每个整数是32位的)?
一个数在不在就是两个状态,在或者不在,就可以用1个位来代表。
每个整数是32位的,那么所有的整数也就2^32个,大概42亿个数左右。
可以申请2^32的位,把每一个整数都覆盖了,40亿个数的位分别为1,剩下的位为0。
新的整数,就可以跟进它的大小来判断相应的位,比如1245,就去看1245位是1还是0来判断是否在这40亿个整数中。
232个位,就是229个字节,也就是500M左右。
位图法(bitmap)