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



題目:


解答:

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


RecentCounter* recentCounterCreate()
{
    #define MAX_PING_SIZE 10000

    RecentCounter *r = malloc(sizeof(RecentCounter));
    r->ping = malloc(sizeof(int) * MAX_PING_SIZE);
    r->cnt = 0;

    return r;
}

int recentCounterPing(RecentCounter* obj, int t)
{
    #define PING_TIME 3000

    int cc = 0;
    int cnt = 0;
    int min = t - PING_TIME;

    for (cc = 0; cc < obj->cnt; cc++) {
        if (obj->ping[cc] >= min) {
            cnt += 1;
        }
    }
    cnt += 1;
    obj->ping[obj->cnt++] = t;

    return cnt;
}

void recentCounterFree(RecentCounter* obj)
{
    free(obj->ping);
    obj->ping = NULL;
}