如何在一亿不数字中确定某个数字是否存在?上来想到的是哈希表或者排序后二分查找,实际有种时间复杂度和空间复杂度都更优的位数组(Bitset),利用每个 bit 的 0、1 来表示数字是否存在,这样一个数字不需要 int 4 个字节,只需要 一个 bit
比如有一个范围为0到9的集合,要表示哪些数字存在,比如1, 3, 5, 7 在集合中:
1. 创建位数组:0000000000
2. 设置1, 3, 5, 7 这些位置的位为1:0101010100
3. 检查某个数字是否存在,直接检查对应位是否为1即可
展开
27