事实上,针对时间问题,可以采用巧妙的算法搭配合适的数据结构(如布隆过滤器、哈希、位图、堆、数据库、倒排索引、Trie树)来解决;而对于空间问题,可以采取分而治之(哈希映射)的方法,也就是说,把规模大的数据转化为规模小的,从而各个击破。
今天我们来聊聊 Bitmap 算法。
Bitmap 算法
中文叫做位图算法
这里所说的位图不是像素图片,而是内存中连续的二进制位(bit),用于对大量整型数据做去重和查询。
举个例子,给定一块长度是 10bit 的内存空间,想要依次插入整型数据 4,2,1,3。 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。此时bitmap的所有位都是0。
1. 把整型数4存入bitmap,对应存储的位置就是下标为4的位置,将此bit置为1。
2. 把整型数2存入bitmap,对应存储的位置就是下标为2的位置,将此bit置为1。