這個面試題, 我設計的0-1表比紅黑樹好!
阿新 • • 發佈:2018-12-31
前不久, 遇到這樣一個面試題: 設計一個集合(集合資料的大小範圍為[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; }
呵呵, 此時, 紅黑表是不是比紅黑樹更好。