真的用heap 下去寫反而更醜XD 但資料量大的時候大概無法用直覺的寫法偷吃步吧。
不管XD! 它就放到TBD 裡吧 XD
typedef struct {
bool num[1001];
int ptr;
} SmallestInfiniteSet;
SmallestInfiniteSet* smallestInfiniteSetCreate() {
SmallestInfiniteSet* obj = calloc (1, sizeof(SmallestInfiniteSet));
for (int i=1;i<1001;i++)
obj->num[i]=true;
obj->ptr = 1;
return obj;
}
int smallestInfiniteSetPopSmallest(SmallestInfiniteSet* obj) {
int ret = obj->ptr;
obj->num[ret]=false;
int new= ret;
while (new < 1001 && obj->num[new]==false)
new++;
obj->ptr = new;
return ret;
}
void smallestInfiniteSetAddBack(SmallestInfiniteSet* obj, int num) {
if (obj->num[num]== true)
return;
obj->num[num]= true;
if (obj->ptr > num)
obj->ptr = num;
return;
}
void smallestInfiniteSetFree(SmallestInfiniteSet* obj) {
free(obj);
return;
}
/**
* Your SmallestInfiniteSet struct will be instantiated and called as such:
* SmallestInfiniteSet* obj = smallestInfiniteSetCreate();
* int param_1 = smallestInfiniteSetPopSmallest(obj);
* smallestInfiniteSetAddBack(obj, num);
* smallestInfiniteSetFree(obj);
*/
沒有留言:
張貼留言