思路:将3000ms这个时间范围看成一个关于时间的滑动窗口,如果某个时间由于太早而超出了范围,那么它将滑出该时间窗口。
class RecentCounter {
private:
queue<int> q;
public:
RecentCounter() {}
int ping(int t) {
q.push(t);
while (t - q.front() > 3000) q.pop(); //若时间太早,则循环出队
return q.size(); //最后返回队列长度,即最近3000ms的请求次数
}
};