这个面试题, 我设计的0-1表比红黑树好!

来源:互联网 发布:蓝海智投 知乎 编辑:程序博客网 时间:2024/06/05 09:07

        前不久, 遇到这样一个面试题:   设计一个集合(集合数据的大小范围为[0, 1000]), 要求设计一个set, 能增, 删, 查, 并能查集合元素的个数。 要求效率尽可能高。

        我估计, 面试官可能是想让我用链表、BST, AVL, 或者红黑树来搞, 不过我直接给出数组的解法, 也就是0-1数组, 如下:

#include <stdio.h>int main() {    int a[1001] = {0};   // 用bitmap更省空间        // 插入56    a[56] = 1;    a[0]++;        //删除72    if(1 == a[72])    {        a[72] = 0;        a[0]--;    }        // 查34    if(1 == a[34])    {        printf("yes\n");    }        // size    printf("total is %d\n", a[0]);return 0;}
       算了, 以后我就把它叫红黑表。 我以前在机试的时候就这么玩过, 爽!

       呵呵, 此时, 红黑表是不是比红黑树更好。