933 最近的请求次数
根据题意,只有一个ping()请求,而该请求只关心最近的操作,时间t是递增的。 也就是说,我们的记录只需要保存最近的3000ms之内的,超过的就删除,很容易想到队列。
每次ping()操作的时候,将当前的操作时间先记录下来(放入队列末尾,因为是最新的记录),
再去看有没有超时的记录,有就删除了(队头出队)。
剩下的留在队列中的就是最近3000ms的操作,很明显,就是队列的大小。
class RecentCounter {
public:
RecentCounter() {
}
int ping(int t) {
q_.push(t);
while ((t - q_.front()) > 3000) {
q_.pop();
}
return q_.size();
}
queue<int> q_;
};