栈与队列专题
栈和队列是两种重要的线性数据结构,具有特殊的插入和删除规则。栈遵循后进先出(LIFO)原则,队列遵循先进先出(FIFO)原则。本专题整理了栈与队列相关的经典算法题及其解法。
目录
学习要点
- 栈的基本操作:push、pop、top
- 队列的基本操作:enqueue、dequeue、front
- 栈与队列的相互实现
- 单调栈的应用
- 单调队列的应用
- 优先队列(堆)的使用
- 括号匹配问题
- 表达式求值问题
- 滑动窗口问题
核心思想
- 栈:用于处理需要"最近相关性"的问题,如括号匹配、函数调用、表达式求值等
- 队列:用于处理需要"先来先服务"的问题,如层序遍历、任务调度等
- 单调栈:维护栈内元素的单调性,常用于寻找下一个更大/更小元素
- 单调队列:维护队列内元素的单调性,常用于滑动窗口最值问题