Skip to content
进阶

一句话答案

Top-K 三种解法:快速选择 O(n) 平均、小顶堆 O(nlogk) 适合流式、排序 O(nlogn) 最简单。

核心要点
方法时间空间适用
快速选择O(n)O(1)一次性大数据
小顶堆O(nlogk)O(k)流式/动态
排序O(nlogn)O(1)数据量小

小顶堆: 维护 K 大小的堆,遍历时比堆顶大就替换

追问与易错

追问方向:

  • 快速选择的最坏情况怎么优化?
  • Top-K 的 K 很大怎么办?
  • 海量数据 Top-K 怎么做?

易错点:

  • ❌ 排序是 Top-K 最好方案——堆方法 O(nlogk) 更优
  • ❌ 小顶堆不是应该用大顶堆吗——Top-K 大用小顶堆

💡 记忆锚点

找最大的K个数,反直觉地用小顶堆:维护一个K大小的小顶堆,堆顶是"门槛",比门槛高的才能进来把最矮的挤掉,最后堆里剩的就是最大的K个。流式数据用堆(O(nlogk)),一次性大数据用快速选择(O(n)均摊,类似快排但只递归一半),数据少直接排序。