build
This commit is contained in:
parent
e48716c883
commit
cfc7329129
@ -4,9 +4,9 @@ comments: true
|
|||||||
|
|
||||||
# 16.2 一起参与创作
|
# 16.2 一起参与创作
|
||||||
|
|
||||||
由于作者能力有限,书中难免存在一些遗漏和错误,请您谅解。如果您发现了笔误、失效链接、内容缺失、文字歧义、解释不清晰或行文结构不合理等问题,请协助我们进行修正,以帮助其他读者获得更优质的学习资源。
|
由于作者能力有限,书中难免存在一些遗漏和错误,请您谅解。如果您发现了笔误、失效链接、内容缺失、文字歧义、解释不清晰或行文结构不合理等问题,请协助我们进行修正,以给读者提供更优质的学习资源。
|
||||||
|
|
||||||
所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)的 GitHub ID 将在仓库、网页版和 PDF 版的主页上进行展示,以感谢他们对开源社区的无私奉献。
|
所有[撰稿人](https://github.com/krahets/hello-algo/graphs/contributors)的 GitHub ID 将被展示在本书的仓库主页上,以感谢他们对开源社区的无私奉献。
|
||||||
|
|
||||||
!!! success "开源的魅力"
|
!!! success "开源的魅力"
|
||||||
|
|
||||||
@ -40,11 +40,9 @@ comments: true
|
|||||||
|
|
||||||
### 3. Docker 部署
|
### 3. Docker 部署
|
||||||
|
|
||||||
执行以下 Docker 脚本,稍等片刻,即可在网页 `http://localhost:8000` 访问本项目。
|
在 `hello-algo` 根目录下,执行以下 Docker 脚本,即可在 `http://localhost:8000` 访问本项目。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git clone https://github.com/krahets/hello-algo.git
|
|
||||||
cd hello-algo
|
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -205,13 +205,51 @@ comments: true
|
|||||||
=== "JS"
|
=== "JS"
|
||||||
|
|
||||||
```javascript title="top_k.js"
|
```javascript title="top_k.js"
|
||||||
[class]{}-[func]{topKHeap}
|
/* 基于堆查找数组中最大的 k 个元素 */
|
||||||
|
function topKHeap(nums, k) {
|
||||||
|
// 使用大顶堆 MaxHeap,对数组 nums 取相反数
|
||||||
|
const invertedNums = nums.map((num) => -num);
|
||||||
|
// 将数组的前 k 个元素入堆
|
||||||
|
const heap = new MaxHeap(invertedNums.slice(0, k));
|
||||||
|
// 从第 k+1 个元素开始,保持堆的长度为 k
|
||||||
|
for (let i = k; i < invertedNums.length; i++) {
|
||||||
|
// 若当前元素小于堆顶元素,则将堆顶元素出堆、当前元素入堆
|
||||||
|
if (invertedNums[i] < heap.peek()) {
|
||||||
|
heap.pop();
|
||||||
|
heap.push(invertedNums[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 取出堆中元素
|
||||||
|
const maxHeap = heap.getMaxHeap();
|
||||||
|
// 对堆中元素取相反数
|
||||||
|
const invertedMaxHeap = maxHeap.map((num) => -num);
|
||||||
|
return invertedMaxHeap;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "TS"
|
=== "TS"
|
||||||
|
|
||||||
```typescript title="top_k.ts"
|
```typescript title="top_k.ts"
|
||||||
[class]{}-[func]{topKHeap}
|
/* 基于堆查找数组中最大的 k 个元素 */
|
||||||
|
function topKHeap(nums: number[], k: number): number[] {
|
||||||
|
// 将堆中所有元素取反,从而用大顶堆来模拟小顶堆
|
||||||
|
const invertedNums = nums.map((num) => -num);
|
||||||
|
// 将数组的前 k 个元素入堆
|
||||||
|
const heap = new MaxHeap(invertedNums.slice(0, k));
|
||||||
|
// 从第 k+1 个元素开始,保持堆的长度为 k
|
||||||
|
for (let i = k; i < invertedNums.length; i++) {
|
||||||
|
// 若当前元素小于堆顶元素,则将堆顶元素出堆、当前元素入堆
|
||||||
|
if (invertedNums[i] < heap.peek()) {
|
||||||
|
heap.pop();
|
||||||
|
heap.push(invertedNums[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 取出堆中元素
|
||||||
|
const maxHeap = heap.getMaxHeap();
|
||||||
|
// 对堆中元素取相反数
|
||||||
|
const invertedMaxHeap = maxHeap.map((num) => -num);
|
||||||
|
return invertedMaxHeap;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "Dart"
|
=== "Dart"
|
||||||
|
4
index.md
4
index.md
@ -84,9 +84,9 @@ hide:
|
|||||||
|
|
||||||
<h2 align="center"> 序 </h2>
|
<h2 align="center"> 序 </h2>
|
||||||
|
|
||||||
两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间,最常收到的一个问题是“如何入门学习算法”。逐渐地,我对这个问题产生了浓厚的兴趣。
|
两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间,最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。
|
||||||
|
|
||||||
两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力强的同学能够顺利地将地雷逐个排掉,而基础不足的同学很可能被炸的满头是包,并在挫折中步步退缩。通读教材书籍也是一种常见做法,但对于面向求职的同学来说,毕业季、投递简历、准备笔试面试已经占据了大部分精力,厚重的书籍往往变成了一项艰巨的挑战。
|
两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同学能够顺利地将地雷逐个排掉,而基础不足的同学很可能被炸的满头是包,并在挫折中步步退缩。通读教材书籍也是一种常见做法,但对于面向求职的同学来说,毕业季、投递简历、准备笔试面试已经占据了大部分精力,厚重的书籍往往变成了一项艰巨的挑战。
|
||||||
|
|
||||||
如果你也面临类似的困扰,那么很幸运这本书找到了你。本书是我对此问题的给出的答案,即使不是最优解,也至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。
|
如果你也面临类似的困扰,那么很幸运这本书找到了你。本书是我对此问题的给出的答案,即使不是最优解,也至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user