用户名: 密码: 企业 个人
当前位置:89学习网范文文章招聘应聘面试问题腾讯面试题» 正文

腾讯面试题

[10-16 20:21:13]   来源:http://www.89xue.com  面试问题   阅读:90
摘要: 4个字节的整数最大可表示为2^32=4294967296, 一个数一个数的读入内存,建立一个bit map,共需要4294967296个bits(也就是0.5G字节的内存,并没有超过1G内存的限制),读入每一个数,置相应的bit为1。 1 int N = 20; // # of number 2 int M = 1000; // number range 3 std::vector<int> a(N); // can be imported from external file number by number 4 for (int。
腾讯面试题,标签:面试问题范文,http://www.89xue.com

    4个字节的整数最大可表示为2^32=4294967296, 一个数一个数的读入内存,建立一个bit map,共需要4294967296个bits(也就是0.5G字节的内存,并没有超过1G内存的限制),读入每一个数,置相应的bit为1。

    1     int N = 20; // # of number

    2     int M = 1000;   // number range

    3     std::vector<int> a(N);  // can be imported from external file number by number

    4     for (int i = 0; i < N; i++)

    5         a[i] = (int)rand()%M;

    6     std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));

    7     std::cout << "\n";

    8     // bit map setup for existence of each number

    9     unsigned int nbytes = M%8 ? (M/8+1) : (M/8);

    10     std::cout << "nbytes = " << nbytes << "\n";

    11

    12     char* p = new char [nbytes];

    13     memset(p, 0, sizeof(char)*nbytes);

    14

    15     for (int i = 0; i < N; i++) {

    16         unsigned int index = a[i]/8;

    17         unsigned int bitpos = a[i]%8;

    18         char* tmp = p+index;

    19         *tmp |= 1 << bitpos;

    20         //std::cout << "bit pos set to 1 : " << 8*index+bitpos << "\n";

    21     }

    22     for (int i = nbytes-1; i >= 0; i--) {

    23         printf("%02X ", (char)*(p+i)&0xFF);

    24     }

    25     std::cout << "\n";

    26     delete [] p;

    更多相关的文章推荐,大家敬请关注www.89xue.com的面试问题栏目!

上一页  [1] [2] 


Tag:面试问题面试问题范文招聘应聘 - 面试问题
上一篇:公安面试题