logo
Algorithms study cheatsheets

Coding interview 的 Heap cheatsheet

Heap 学习指南,包含练习题、技巧、时间复杂度与推荐资源

Introduction

Heap 是一种特殊的树结构(complete tree),并满足 heap property。

  • Max heap - 节点值必须是其子树中的最大值,这一性质递归成立。
  • Min heap - 节点值必须是其子树中的最小值,这一性质递归成立。

在算法面试里,heap 和 priority queue 基本可视为同一种结构。Heap 适用于需要反复删除最高(或最低)优先级元素,或需要插入与删除 root 交替进行的场景。

Learning resources

Implementations

LanguageAPI
C++std::priority_queue
Javajava.util.PriorityQueue
Pythonheapq
JavaScriptN/A

Time complexity

OperationBig-O
Find max/minO(1)
InsertO(log(n))
RemoveO(log(n))
Heapify (create a heap out of given array of elements)O(n)

Techniques

Mention of k

如果题目提到 top 或 lowest k,通常就是 heap 的信号,例如 Top K Frequent Elements

如果需要 top k,用 size 为 k 的 Min Heap。遍历元素并 push 进 heap(对 python heapq 来说,如果要找 max,需要先取负)。当 heap size 超过 k 时,pop 最小值即可保证剩下的是 k 个最大元素。

Essential questions

这些是该 topic 必练题。

这些是在掌握基础后推荐练习的题目。

检测你的掌握度

3
1/3

Q1. Heap 的 insert 操作时间复杂度是?

相关练习题

Coding interview 的 Heap cheatsheet

暂无相关练习题