239. 滑动窗口最大值
题目链接:https://leetcode.cn/problems/sliding-window-maximum/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
- 单调队列:队列里单调递减或递增
0x3 今日学习的文章链接,或者视频链接
- https://programmercarl.com/0239.%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.html
0x4 看完代码随想录之后的想法
- 滑动窗口最大值
- 单调队列
- 自己定义push, pop以满足此题需求
- 先将前k(窗口大小)的元素放进队列(push),然后开始滑动窗口。
- 滑动窗口首先要移除最前面的元素(pop),然后将最后新进来的加入队列(push)
- 记录最大值(取队头[0]元素)
- pop
- 每次弹出的时候,比较队头[0]元素是不是和窗口要移除的元素相等,如果相等,则弹出
- 同时比较队列是否为空
- push
- 如果新进来的这个数比队尾[-1]的数大,那么把这些小的数都从队尾巴弄出去,然后再将这个新数放进来,这样就保持了整个队列从大到小的单调性
- 单调队列
0x5 今日收获,记录一下自己的学习时长
- 滑动窗口最大值
- 自定义单调队列
- 2h
347. 前 K 个高频元素
题目链接:https://leetcode.cn/problems/top-k-frequent-elements/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
- 到处都是困难,python不知道怎么实现
0x3 今日学习的文章链接,或者视频链接
0x4 看完代码随想录之后的想法
- 要统计元素出现频率;对频率排序;找出前K个高频元素
- 用小顶堆,因为要统计最大前k个元素,只有小顶堆每次将最小的元素弹出,最后小顶堆里积累的才是前k个最大元素。
0x5 今日收获,记录一下自己的学习时长
- 前 K 个高频元素
- 小顶堆
- 优先队列
- 2h
待重点复习
239, 347
总结
- 滑动窗口最大值
- 自定义单调队列
- 前 K 个高频元素
- 小顶堆
- 优先队列