bitmap统计数字
2015-05-29 11:03 放作夥 阅读(509) 评论(0) 编辑 收藏 举报1)几亿个无符号整数集合,一个数字出现A次,其余出现B次,求出现A次的数字。
无符号整数的范围不超过10位数,开一个10X10的数组,统计集合的数字每位的数字的出现次数,
输出模A为0的数字。
2) 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。
8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。 (可以理解为从0-99 999 999的数字,每个数字对应一个Bit位,所以只需要99M个Bit==12MBytes,这样,就用了小小的12M左右的内存表示了所有的8位数的电话)
3) 2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。
2.5亿个bit是32M左右,这么看来位图相当相当节省空间。将bit-map扩展一下,用2bit表示一个数即可,0表示未出现,1表示出现一次,2表示出现2次及以上,在遍历这些数的时候,如果对应位置的值是0,则将其置为1;如果是1,将其置为2;如果是2,则保持不变。或者我们不用2bit来进行表示,我们用两个bit-map即可模拟实现这个2bit-map,都是一样的道理。
4) 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?
找出共同的,言下之意就是去重
位图的应用好像蛮多的,之前见过位排序。