题目一
看到题目的第一想法:
用栈缓存数字,碰到运算符就计算得到结果,需要注意一下字符串,运算符的判断
看了代码随想录的想法:
思路基本差不多,但是没想到的点是,其实结果也是可以压入栈的,这样更加简洁.
题目二
看到题目的第一想法:
只要比较新滑入的数和前一个窗口的最大数的大小;
看了代码随想录的想法:
维护了一个单调队列,但实际也是比较上一次的最大值和新滑入的最大值,以此为此一个单调队列
注意数据结构Dqueue的使用.
题目三
看到题目的第一想法:
返回前k个高频,看起来不一定是用栈和队列,用map也更容易想到,然后对map的value排序.
看了代码随想录的想法:
这里引入一个优先级队列.
为什么不用快排呢, 使用快排要将map转换为vector的结构,然后对整个数组进行排序, 而这种场景下,我们其实只需要维护k个有序的序列就可以了,所以使用优先级队列是最优的。
⚠️小顶堆的构建方式