1. 程式人生 > >這個面試題, 我設計的0-1表比紅黑樹好!

這個面試題, 我設計的0-1表比紅黑樹好!

        前不久, 遇到這樣一個面試題:   設計一個集合(集合資料的大小範圍為[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;
}
       算了, 以後我就把它叫紅黑表。 我以前在機試的時候就這麼玩過, 爽!

       呵呵, 此時, 紅黑表是不是比紅黑樹更好。