3. 队列

队列

基本都是参考这个up主,非常感谢

1. 相关概念:

队列:是一种特殊的线性数据结构,队列只能允许在队头,队尾进行添加和查询等相关操作。先进先出

队列底层是LinkedList实现的

2. 队列的四种功能

1. 访问(Access):O(N)

要一个一个访问

2. 搜索(Search):O(N)

和访问差不多

从头到尾遍历

3. 插入(Insert): O(1)

只能末尾插入

4. 删除(Delete):O(1)

只能删除头部元素

3.常用操作

1.创建队列

3. 队列

用LinkedList是因为它删除和插入时间复杂度是O(1)

2.添加元素

3. 队列

add()

3.获取即将出队的元素

3. 队列

peek()

4.删除即将出队的元素

3. 队列

poll()

5.判断队列是否为空

3. 队列

isEmpty()

6.队列长度

3. 队列

size()

7.遍历队列(边删除边遍历队列操作)

3. 队列

时间复杂度O(N)

边删除边遍历

4.Leetcode

933.最近的请求次数

3. 队列3. 队列

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();

    }
}
  1. 先把构造函数补充完整,完成初始化的方法

  2. 向队列里面添加东西

  3. 限定条件,不为空并且t - queue.peek() > 3000

    队列头出去

  4. 否则返回队列的长度

上一篇:Stack详解


下一篇:Hadoop配置信息处理(源码解析)