代码随想录算法训练营第十三天 | 239. 滑动窗口最大值,347.前 K 个高频元素

一、239. 滑动窗口最大值

题目链接:

LeetCode 239. 滑动窗口最大值

学习前:

思路:

学习后:

自定义双端队列,实现push、pop、peek方法,使得队列单调非增。peek方法不变;当入队时,若当前元素比队尾元素大,则pop队尾,直到队列为空或当前元素不大于队尾元素;当出队时,若队列非空且队首元素和窗口要离开的元素值相等,则pop

时间复杂度:O(n)

空间复杂度:O(k)

二、347.前 K 个高频元素

题目链接:

LeetCode 347.前 K 个高频元素

学习前:

思路:

学习后:

  1. 定义map集合,获取元素出现的频率
  2. 定义优先级队列,存放前k个高频元素的键值对
  3. 从优先级队列中获取这k个元素
    时间复杂度:O(nlogk)

空间复杂度:O(n)

三、学习总结

  1. 时间:3h
  2. 滑动窗口要借助双端队列,自定义实现
  3. 优先级队列底层数据结构是大顶堆或小顶堆,还需要再深入了解下
posted @ 2023-12-25 22:24  amulet  阅读(13)  评论(0)    收藏  举报