Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

最近的请求次数

题目

lettcode-933题
难度:简单1633055736251

解题思路

从题目上来看,一时半会看不出来是什么意思。

其实所输入的数字t就是一个毫秒数,根据这个数来判断3000毫秒之前的数,如果小于3000毫秒之前的就删除小于的那个。

所以当我们输入3002时,3000-3000=2,而1小于2,所以1就会被删除。

所以说这个题是一个先进先出的方式,所以我们可以使用队列来实现。

具体实现方式如下

具体代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class RecentCounter {

//构造一个队列,LinkedList的队列
Queue<Integer> queue;
public RecentCounter() {
queue=new LinkedList<>();
}

public int ping(int t) {
//将输入的数值入队
queue.add(t);
//判断栈顶元素是否小于t-3000
//如果小于t-3000,将其出队
while (queue.peek()<t-3000){
queue.poll();
}
//返回队列的长度
return queue.size();
}
}