相关位置
在《堆详解(最大堆、最小堆、优先队列)》这篇文章中“Top K 问题常见选择”部分,原文写道:
求第 K 大:维护大小为 K 的小顶堆。
求前 K 高频:先用哈希表计数,再用小顶堆保留 K 个高频元素。
数据流中位数:一个大顶堆维护较小的一半,一个小顶堆维护较大的一半。
这三种场景似乎正好对应 LeetCode Hot 100 中“堆”专题的三道题:
- 数组中的第 K 个最大元素
- 前 K 个高频元素
- 数据流的中位数
疑问
对于“数组中的第 K 个最大元素”(LeetCode 215),题目明确要求设计时间复杂度为 O(n) 的算法。
维护大小为 K 的小顶堆时,每个元素的入堆/调整成本最多为 O(log K),遍历 n 个元素的总时间复杂度为:O(n log K)
相关位置
在《堆详解(最大堆、最小堆、优先队列)》这篇文章中“Top K 问题常见选择”部分,原文写道:
这三种场景似乎正好对应 LeetCode Hot 100 中“堆”专题的三道题:
疑问
对于“数组中的第 K 个最大元素”(LeetCode 215),题目明确要求设计时间复杂度为
O(n)的算法。维护大小为
K的小顶堆时,每个元素的入堆/调整成本最多为O(log K),遍历n个元素的总时间复杂度为:O(n log K)