题目
- 150.逆波兰表达式求值
- 239.滑动窗口最大值
- 347.前 K 个高频元素
150.逆波兰表达式求值
- 适合用栈操作运算:遇到数字则入栈;遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。
- 注意是string的一个vector
239.滑动窗口最大值
- 维护一个单调queue,这里是单调递减
- pop(value):如果窗口移除的元素value等于单调队列的出口元素,那么队列弹出元素,否则不用任何操作
- push(value):如果push的元素value大于入口元素的数值,那么就将队列入口的元素弹出,直到push元素的数值小于等于队列入口元素的数值为止
347.前 K 个高频元素
- 先用unordered_map统计每个元素出现次数
- 用小顶堆,因为要统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆里积累的才是前k个最大元素。