堆栈(stack): 也可以叫栈。但是不能叫堆,堆是heap。
先入后出 First in last out(FILO)
队列(Queue): 先入先出Fisrt in First out(FIFO)
实战
20. 有效的括号
https://leetcode-cn.com/problems/valid-parentheses/description/
方法1: 比我之前写的简介
方法2:这样的时间复杂度要比上面的高
实战
21. 用栈实现队列
https://leetcode-cn.com/problems/implement-queue-using-stacks/
优先队列(Priority Queue): 也就是我们中文的“堆”
正常入,按照优先级出(可以是最大的先出,最小的先出,次数最多的先出等等…)
优先队列不需要动手实现,python有库直接调用
最小优先队列(堆顶最小)Mini Heap
最大优先队列(堆顶最大)Max Heap
不同的堆
实战
22. 数据流中的第 K 大元素
https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/
实战
23. 滑动窗口最大值
https://leetcode-cn.com/problems/sliding-window-maximum/
方法1
方法2 双端队列 deque