239. 滑动窗口最大值
题目链接:https://leetcode.cn/problems/sliding-window-maximum/
思路:一开始完全没有头绪,看了卡哥的视频讲解,理解如下:
队列只需要维护有可能成为窗口里最大值的元素,同时保证队列里的元素数值是由大到小的。(单调队列)
队列出口元素是窗口里最大元素,每次从队尾push进元素时,需要与其前面的元素比较,从队尾pop出比其小的元素,每次pop元素时,需要将新元素与队列出口元素对比,如果值等于队列出口元素,则将队列出口元素pop出,在一个窗口内进行操作获取最大值然后一个周期结束,滑动窗口
小结:这里出现了小问题,没有定义类单调序列,还有里面的private和public的具体含义没有定清楚。
347.前 K 个高频元素
题目链接:https://leetcode.cn/problems/top-k-frequent-elements/
思路(靠题解视频总结):
这个题目涉及三个方面:要统计元素出现频率、对频率排序、找出前K个高频元素
统计元素出现的频率,这一类的问题可以使用map来进行统计。
对频率进行排序,使用优先级队列(对外接口只是从队头取元素,从队尾添加元素)。
要用小顶堆,因为要统计最大前k个元素,只有弹出,每次是从栈顶弹出。
小结:思路大概明白了,但是一些细节比如顶锥的定义,map的遍历还是需要多加熟悉。