程式語言 - LeetCode - C - 933. Number of Recent Calls



題目:


解答:

typedef struct {
    int *q;
    int cnt;
} RecentCounter;

RecentCounter* recentCounterCreate(void)
{
    RecentCounter *r = calloc(1, sizeof(RecentCounter));

    r->q = calloc(1000000000, sizeof(int));
    return r;
}

int recentCounterPing(RecentCounter* obj, int t)
{
    int i = 0;
    int r = 0;

    obj->q[obj->cnt++] = t;
    for (i = 0; i < obj->cnt; i++) {
        if ((obj->q[i] >= (t - 3000)) && (obj->q[i] <= t)) {
            r += 1;
        }
    }

    return r;
}

void recentCounterFree(RecentCounter* obj)
{
    free(obj->q);
    free(obj);
}

/**
 * Your RecentCounter struct will be instantiated and called as such:
 * RecentCounter* obj = recentCounterCreate();
 * int param_1 = recentCounterPing(obj, t);
 
 * recentCounterFree(obj);
*/