LeetCode刷题碎碎念(十二)-- 堆
堆的应用基本问题
堆排序
- 所有元素堆化(最小堆为例)
- pop堆顶元素(最小值),放入数组中储存
- 直到堆中没有元素
- 得到数组为元素从小到大排序
N: N个数据(节点)
时间复杂度:O(N log N) – N 个元素 * pop O(log N)
空间复杂度:O(N) 堆
Top K
利用 堆 的数据结构获取 Top K 大的元素或者 Top K 小的元素。
同堆排序,pop出K个堆顶元素
时间复杂度: O(KlogN)
空间复杂度:O(N)
The Kth 问题
获取 The Kth 大元素或者 The Kth 小元素。
同Top K
时间复杂度: O(KlogN)
空间复杂度: O(N)