解题思路:
在说解题思路前,先说一下题目的意思(毕竟我刚开始并没有看懂题目是什么意思,还是看了别人的思路才知道原来是这个意思):每次给定一个时间常数t,判断截止到t为止,所有输入的数字中与t的时间间隔在【0,3000】范围内数字有多少个?
思路:每个t存储在队列中,由于时间是递增的,所以队列中的数字也是递增的,从头开始遍历队列,剔除与当前的时间t差值大于3000的数字,最终返回队列的长度,就是满足要求的数字。
class RecentCounter {
private Queue<Integer> queue;
public RecentCounter() {
queue=new LinkedList<>();
}
public int ping(int t) {
queue.offer(t);
while(t-queue.peek()>3000){
queue.poll();
}
return queue.size();
}
}