朴素算法Bare Algo

堆与优先队列

最值排查、TopK提取及多路数据合并。

算法题

(9)

第 1 阶段:先把堆的最值维护与固定容量模型练熟

先建立“反复取最值为什么用堆”的直觉。重点是识别大顶堆、小顶堆和固定容量堆,以及每次插入后该淘汰谁。

1046. 最后一块石头的重量

简单
数组堆

215. 数组中的第 K 个最大元素

中等
数组堆快速选择

703. 数据流中的第 K 大元素

简单
堆设计

第 2 阶段:掌握 TopK 统计与自定义比较器

这一阶段把堆和哈希表、字符串、几何距离结合起来。核心是维护一个容量为 K 的候选池,持续淘汰不可能进入答案的元素。

347. 前 K 个高频元素

中等
数组哈希表堆

692. 前 K 个高频单词

中等
哈希表字符串堆

973. 最接近原点的 K 个点

中等
几何堆快速选择

第 3 阶段:学会用优先队列做多路归并与数据流设计

最后处理堆专题的进阶模型:多个有序来源的归并,以及两部分数据的动态平衡。核心是把“谁先出队”和“边界如何维护”拆开思考。

23. 合并 K 个升序链表

困难
链表堆分治

378. 有序矩阵中第 K 小的元素

中等
数组二分查找堆

295. 数据流的中位数

困难
堆设计