⛰️ 堆
优先队列(堆)用于动态维护最大 / 最小值,TopK 问题的标准解法。
3 题 · 中等 ×2 困难 ×1
| # | 题目 | 难度 |
|---|---|---|
| 215 | 数组中的第 K 个最大元素 | 中等 |
| 347 | 前 K 个高频元素 | 中等 |
| 295 | 数据流的中位数 | 困难 |
核心思路
- 第 K 大元素:维护大小为 K 的最小堆,堆顶即第 K 大;也可用快速选择(平均 O(n))。
- 前 K 个高频元素:先统计频率,再用大小为 K 的最小堆(按频率排序)保留频率最高的 K 个元素。
- 数据流的中位数:大根堆存较小的一半,小根堆存较大的一半,保持两堆大小差不超过 1;中位数由堆顶推导。