mirror of
https://github.com/krahets/hello-algo.git
synced 2026-09-02 21:27:14 +00:00
build
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 8.3. Top-K 问题
|
||||
# 8.3 Top-K 问题
|
||||
|
||||
!!! question
|
||||
|
||||
@@ -10,7 +10,7 @@ comments: true
|
||||
|
||||
对于该问题,我们先介绍两种思路比较直接的解法,再介绍效率更高的堆解法。
|
||||
|
||||
## 8.3.1. 方法一:遍历选择
|
||||
## 8.3.1 方法一:遍历选择
|
||||
|
||||
我们可以进行 $k$ 轮遍历,分别在每轮中提取第 $1$ , $2$ , $\cdots$ , $k$ 大的元素,时间复杂度为 $O(nk)$ 。
|
||||
|
||||
@@ -24,7 +24,7 @@ comments: true
|
||||
|
||||
当 $k = n$ 时,我们可以得到从大到小的序列,等价于「选择排序」算法。
|
||||
|
||||
## 8.3.2. 方法二:排序
|
||||
## 8.3.2 方法二:排序
|
||||
|
||||
我们可以对数组 `nums` 进行排序,并返回最右边的 $k$ 个元素,时间复杂度为 $O(n \log n)$ 。
|
||||
|
||||
@@ -34,7 +34,7 @@ comments: true
|
||||
|
||||
<p align="center"> 图:排序寻找最大的 k 个元素 </p>
|
||||
|
||||
## 8.3.3. 方法三:堆
|
||||
## 8.3.3 方法三:堆
|
||||
|
||||
我们可以基于堆更加高效地解决 Top-K 问题,流程如下:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user