本文共 530 字,大约阅读时间需要 1 分钟。
数的判断
题目如下
7、腾讯面试题:给40亿个不重复的unsignedint的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
分析:1个unsigned int占用4字节,40亿大约是4G个数不到,那么一共大约要用16G的内存空间,如果内存不够大,反复和硬盘交换数据的话,后果不堪设想。
位图法://腾讯面试题:给40亿个不重复的unsignedint的整数,没排过序的,//然后再给一个数,如何快速判断这个数是否在那40亿个数当中?//位图法,占内存512MB//一个unsigned int 能表示的数是0~2^32-1#include#include using namespace std; //一个unsigned int 可以表示32个数#define MAX 1<<27unsigned int num[MAX]={0};void main() { for(unsigned int i=1;i<=10000;i++){ unsigned int index = i/32; unsigned int bit = i%32; num[index]|=1<
转载地址:http://pbvvi.baihongyu.com/