关于队列一共有两类问题
- 在一定条件下,实现某种具有某种特性的队列
- 借助队列的某些特性去巧妙的解决某一类问题。
队列的特点:先进先出
队列的用途:
- 单调队列解决滑动窗口最值问题
- 树或者图的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
|
1. 普通队列:
int q[N], hh = 0, tt = -1;
q[ ++ tt] = x;
hh ++ ;
q[hh];
if (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) {
}
|
实现队列
借助两个栈来实现一个队列
滑动窗口最值问题
利用一种特殊的队列(单调队列)来巧妙的解决滑动窗口最值问题。