emm…这是一道阅读理解题,一开始看了好几遍看不懂,还是看了评论区才理解了,理解题目后就很简单了。
题目会用ping方法传入时间参数t,表示在t时刻发送了一个请求,我们需要计算包括最近一个t时刻在内的3000ms内我们所接收到的请求的总数。
解题
马上可以想到用队列,每次在队尾放进新的 t 后,用while循环判断 t 与队首元素之差是否在3000ms以内,若否,则将队首元素出队。
class RecentCounter {
private Queue<Integer> q ;
public RecentCounter() {
q= new LinkedList<>();
}
public int ping(int t) {
q.offer(t);
while(q.peek() <t-3000){
q.poll();
}
return q.size();
}
}