題目:

解答:
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);
*/