import java.util.LinkedList;
import java.util.Queue;
public class test01 {
public static void main(String[] args) {
//创建队列 创建链表来增加删除这个队列
Queue <Integer> queue = new LinkedList<>();
//添加元素
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
System.out.println(queue.toString());
//获取一个元素,使用peek,这个的意思即将出队的元素,先来先出队,也就是1
/* int temp1 = queue.peek();
System.out.println(temp1);*/
//删除一个元素,使用poll,这个的意思删除即将出队的元素
int temp2 = queue.poll();
System.out.println(temp2);
System.out.println(queue.toString());
//判断队列的元素是否为空,使用isEmpty,如果是空的返回一个true,不是空的则返回一个false。
System.out.println(queue.isEmpty());
//判断队列的长度 O(1),它的时间复杂度是O(1)
System.out.println(queue.size());
//遍历队列
while (!queue.isEmpty()){
int temp = queue.poll();
System.out.println("遍历的队列是"+":"+temp);
}
}
}
难度简单212
写一个 RecentCounter
类来计算特定时间范围内最近的请求。
请你实现 RecentCounter
类:
RecentCounter()
初始化计数器,请求数为 0 。int ping(int t)
在时间t
添加一个新请求,其中t
表示以毫秒为单位的某个时间,并返回过去3000
毫秒内发生的所有请求数(包括新请求)。确切地说,返回在[t-3000, t]
内发生的请求数。
保证 每次对 ping
的调用都使用比之前更大的 t
值。
思路
首先初始化队列, RecentCounter为默认,当这个队列不为空或者队列的入队数字小于t减去3000那么就要出队,也就是说超出3000这个范围的数字就应该出队
class RecentCounter {
Queue<Integer> queue = new LinkedList<>();
public RecentCounter() {
}
public int ping(int t) {
while(!queue.isEmpty() && queue.peek()<t-3000){
queue.poll();
}
queue.add(t);
return queue.size();
}
}