堆与优先队列 高频追问 Q&A
1. Q: TopK 为什么常用小顶堆?
A: 堆顶保存当前 TopK 里最小值,新元素只需与堆顶比较即可决定替换。
2. Q: 堆和有序数组怎么选?
A: 动态维护最值选堆;一次性排序并频繁遍历选有序数组。
3. Q: 优先队列底层一定是堆吗?
A: 常见实现是堆,也可以用平衡树等结构。
4. Q: 堆插入和删除复杂度?
A: 均为 O(log n),取堆顶 O(1)。
5. Q: 面试写堆题最容易错哪?
A: 比较器方向(大顶/小顶)和边界条件(空堆、单元素)。