队列
1. 相关概念:
队列:是一种特殊的线性数据结构,队列只能允许在队头,队尾进行添加和查询等相关操作。先进先出
队列底层是LinkedList实现的
2. 队列的四种功能
1. 访问(Access):O(N)
要一个一个访问
2. 搜索(Search):O(N)
和访问差不多
从头到尾遍历
3. 插入(Insert): O(1)
只能末尾插入
4. 删除(Delete):O(1)
只能删除头部元素
3.常用操作
1.创建队列
用LinkedList是因为它删除和插入时间复杂度是O(1)
2.添加元素
add()
3.获取即将出队的元素
peek()
4.删除即将出队的元素
poll()
5.判断队列是否为空
isEmpty()
6.队列长度
size()
7.遍历队列(边删除边遍历队列操作)
时间复杂度O(N)
边删除边遍历
4.Leetcode
933.最近的请求次数
class RecentCounter {
Queue<Integer> queue;
public RecentCounter() {
queue = new LinkedList<>();
}
public int ping(int t) {
queue.add(t);
while (!queue.isEmpty() && t - queue.peek() > 3000) {
queue.poll();
}
return queue.size();
}
}
先把构造函数补充完整,完成初始化的方法
向队列里面添加东西
限定条件,不为空并且t - queue.peek() > 3000
队列头出去
否则返回队列的长度