239滑动窗口最大值
- 队列先进先出,先进去在时间上是比后面的元素更早的,理解‘先’,就可以理解为什么在插入元素的时候把队列中先入队的比它更小的删除;
- 单调队列一直保持单调的特性;
- 单调队列的生成,用类实现deque的对象,和pop、push、front的接口。
347前K个高频元素
- map存储<元素,出现次数>;
- 优先队列的建立,第一个参数是队列存储元素类型,第二个参数是底层实现,可以用数组实现,第三个参数是优先级的判断。本题的优先级通过类重载运算符实现小根堆的建立;
- 结果输出k个值,需要保存出现次数最高的k个元素,如果超过k个需要删除最小的那一个,结合小根堆的弹出特性,用小根堆实现,超过k个弹出堆顶。
栈的队列
- 队列queue的基本操作:front(), pop(), back(), push(), empty(), size();
- 栈stack的基本操作:pop(), top(), push(), empty(), size();
- 单调队列的实现;
- 优先级队列的定义和应用。
- 栈和队列可以理解为是容器适配器,他们是通过底层的容器实现的(虽然他们已经很底层了)。有双端队列(deque)、数组(vector)、列表(list),默认情况下是deque实现的,所以在内存上是不连续的,增删改查也会有一些接口的使用。