zoukankan      html  css  js  c++  java
  • BitMap(比特位)

      所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。

      腾讯面试的时候,让写了一个BitMap,以前没怎么写过,不知道如何去写,当时只是知道哪一位置存在置为1,不存在置为0;脑袋一热,竟然去移位计算了,后来面试官给我说了这是错误的写法,自己面试结束后,对BitMap这块知识及时充电。

    首先计算val属于BitMap数组模块的索引index = val / bitLen;

    然后计算val所属这个模块的偏移量 pos = val % bitLen;

    这样就可以知道val在Bit图中的位置;

    const int N = 10000;
    const int bitLen = (1 << 8);
    int arr[N+1] = {1};
    int BitMap[1 + N/bitLen] = {0};
    
    void SetVal(int val)
    {
        BitMap[1 + val >> 8] |= (1 << (val & 0xFF)); //计算val处于那个Bit块中的位置,将其置位1
    }
    //检查是否存在val值
    bool CheckVal(int val)
    {
        return BitMap[1 + val >> 8] & (1 << (val & 0xFF));
    }
    
    //N个随机数的产生
    void GetRand()
    {
        for(int i=1; i <= N; i++)
            arr[i]=i;
        int i, j;
        for(int k=0; k < N; k++)
        {
            i = (rand() * RAND_MAX + rand()) % N;
            j = (rand() * RAND_MAX + rand()) % N;
            swap(arr[i], arr[j]);
        }
    }
  • 相关阅读:
    Nginx详解
    MySQL数据库(未完)
    PXE自动装机
    Rsync数据同步服务
    NFS网络文件系统
    inotify事件监控工具
    scp ssh-key连接原理
    生产环境ssh登陆策略
    npm ERR! errno -4048
    js判断手机系统语言动态引入不同js文件
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3977411.html
Copyright © 2011-2022 走看看