2023年12月2日 星期六

[2336] Smallest Number in Infinite Set (TBD)

扣掉蠢bug 應該是一次PASS的QQ 不過用C好像無法真的驗證Heap?!
真的用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);
*/

沒有留言:

張貼留言