day12栈与队列

发布时间 2023-12-11 16:32:20作者: nrt123987

239.滑动窗口最大值;347.前 K 个高频元素;总结

1 滑动窗口最大值

1.1 思路

封装一个deque类:主要构造pop、push的逻辑

然后使用循环来进行遍历,更新最大值

1.2 代码

二刷补充

2 前 K 个高频元素

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

示例 1:

  • 输入: nums = [1,1,1,2,2,3], k = 2
  • 输出: [1,2]

示例 2:

  • 输入: nums = [1], k = 1
  • 输出: [1]
  • 提示:
    • 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
    • 你的算法的时间复杂度必须优于 $O(n \log n)$ , n 是数组的大小。
    • 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
    • 你可以按任意顺序返回答案。

2.1 思路

自己思考:需要对数组出现过的元素组成[值,数量]这样的封装。

​ 数量与k比较

解题思路:使用小顶堆

2.2 代码

二刷补充

总结

**栈 **:先进后出

队列: 先进先出

要了解底层实现:基于链表或者数组