Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

队列

关于队列一共有两类问题

  1. 在一定条件下,实现某种具有某种特性的队列
  2. 借助队列的某些特性去巧妙的解决某一类问题。

队列的特点:先进先出

队列的用途:

  1. 单调队列解决滑动窗口最值问题
  2. 树或者图的BFS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

//队列 —— 模板题 AcWing 829. 模拟队列
1. 普通队列:
// hh 表示队头,tt表示队尾
int q[N], hh = 0, tt = -1;

// 向队尾插入一个数
q[ ++ tt] = x;

// 从队头弹出一个数
hh ++ ;

// 队头的值
q[hh];

// 判断队列是否为空
if (hh <= tt) //如果hh <= tt, 则队列不空。
{

}

//2. 循环队列
// hh 表示队头,tt表示队尾的后一个位置
int q[N], hh = 0, tt = 0;

// 向队尾插入一个数
q[tt ++ ] = x;
if (tt == N) tt = 0;

// 从队头弹出一个数
hh ++ ;
if (hh == N) hh = 0;

// 队头的值
q[hh];

// 判断队列是否为空
if (hh != tt) //只要两者不相等,队列就不空。
{

}

实现队列

借助两个栈来实现一个队列

滑动窗口最值问题

利用一种特殊的队列(单调队列)来巧妙的解决滑动窗口最值问题。

你的支持是我坚持的最大动力!