Add opening phrase for every chapters. (#670)
Update several chapter covers. Fitune documens.
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 135 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 60 KiB |
|
@ -5,3 +5,11 @@
|
|||
![数组与链表](../assets/covers/chapter_array_and_linkedlist.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
数组的砖块整齐排列,紧贴在一起。
|
||||
|
||||
链表的砖块分散各处,连接的藤蔓自由地穿梭于砖缝之间。
|
||||
|
||||
它们共同构成了数据结构的世界。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![回溯](../assets/covers/chapter_backtracking.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
我们如同迷宫中的探索者,在寻找出口的道路上可能会遇到困难。
|
||||
|
||||
回溯的力量让我们能够重新开始,最终寻找到正确的道路。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![复杂度](../assets/covers/chapter_complexity_analysis.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
复杂度犹如浩瀚的算法宇宙中的指南针。
|
||||
|
||||
它引导我们在时间与空间的维度上深入探索,寻找更优雅的解决方案。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![数据结构](../assets/covers/chapter_data_structure.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
数据结构如同一副稳固而多样的框架。
|
||||
|
||||
它为数据的有序组织提供了蓝图,使算法得以在此基础上生动起来。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![分治](../assets/covers/chapter_divide_and_conquer.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
分治一次又一次地拆解难题,每一次的拆解都让问题变得更为简单。
|
||||
|
||||
从简单做起,一切都不再复杂。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![动态规划](../assets/covers/chapter_dynamic_programming.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
小溪汇入河流,江河汇入大海。
|
||||
|
||||
动态规划将小问题的解汇集成大问题的答案,一步步引领我们走向解决问题的彼岸。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![图](../assets/covers/chapter_graph.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
在生命旅途中,我们就像是每个节点,被无数看不见的边相连。
|
||||
|
||||
每一次的相识与相离,都在这张巨大的网络图中留下独特的印记。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![贪心](../assets/covers/chapter_greedy.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
向日葵朝着太阳转动,时刻都在追求自身成长的最大可能。
|
||||
|
||||
这便是贪心的智慧,一种简单且高效的问题求解策略。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![散列表](../assets/covers/chapter_hashing.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
在计算机世界中,散列表如同一位智能的图书管理员。
|
||||
|
||||
他知道如何有序地组织数据,从而可以通过索书号快速找到目标书籍。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![堆](../assets/covers/chapter_heap.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
堆就像是山川的峰峦,它们层叠起伏、形态各异。
|
||||
|
||||
每一座山峰都有其高低之分,而最高的山峰总是最先映入眼帘。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![初识算法](../assets/covers/chapter_introduction.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
一位少女翩翩起舞,与数据交织在一起,裙摆上飘扬着算法的旋律。
|
||||
|
||||
她邀请你共舞,请紧跟她的步伐,踏入充满逻辑与美感的算法世界。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![前言](../assets/covers/chapter_preface.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
这本书是为所有想要了解并掌握算法的读者编写的。
|
||||
|
||||
无论你的背景如何,都可以在这里找到属于你的学习之旅。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![搜索](../assets/covers/chapter_searching.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
搜索是一场未知的冒险,我们或许需要走遍神秘空间的每个角落,又或许可以快速锁定目标。
|
||||
|
||||
在这场寻觅之旅中,每一次探索都可能得到一个未曾料想的答案。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![排序](../assets/covers/chapter_sorting.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
排序犹如一把将混乱变为秩序的魔法钥匙,使我们能以更高效的方式理解与处理数据。
|
||||
|
||||
无论是简单的升序,还是复杂的分类排列,排序都向我们展示了数据的和谐美感。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![栈与队列](../assets/covers/chapter_stack_and_queue.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
栈如同叠猫猫,而队列就像猫猫排队。
|
||||
|
||||
两者分别代表着先入后出和先入先出的逻辑关系。
|
||||
|
|
|
@ -202,7 +202,9 @@
|
|||
|
||||
![在二叉搜索树中删除节点(度为 1)](binary_search_tree.assets/bst_remove_case2.png)
|
||||
|
||||
当待删除节点的度为 $2$ 时,我们无法直接删除它,而需要使用一个节点替换该节点。由于要保持二叉搜索树“左 $<$ 根 $<$ 右”的性质,因此这个节点可以是右子树的最小节点或左子树的最大节点。假设我们选择右子树的最小节点(或者称为中序遍历的下个节点),则删除操作为:
|
||||
当待删除节点的度为 $2$ 时,我们无法直接删除它,而需要使用一个节点替换该节点。由于要保持二叉搜索树“左 $<$ 根 $<$ 右”的性质,因此这个节点可以是右子树的最小节点或左子树的最大节点。
|
||||
|
||||
假设我们选择右子树的最小节点(即中序遍历的下一个节点),则删除操作为:
|
||||
|
||||
1. 找到待删除节点在“中序遍历序列”中的下一个节点,记为 `tmp` 。
|
||||
2. 将 `tmp` 的值覆盖待删除节点的值,并在树中递归删除节点 `tmp` 。
|
||||
|
|
|
@ -5,3 +5,9 @@
|
|||
![树](../assets/covers/chapter_tree.jpg){ width="600" }
|
||||
|
||||
</div>
|
||||
|
||||
!!! abstract
|
||||
|
||||
参天大树充满生命力,其根深叶茂,分枝扶疏。
|
||||
|
||||
它为我们展现了数据分治的生动形态。
|
||||
|
|
|
@ -84,11 +84,11 @@ hide:
|
|||
|
||||
<h2 align="center"> 序 </h2>
|
||||
|
||||
两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴趣。
|
||||
两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间,最常收到的一个问题是“如何入门学习算法”。逐渐地,我对这个问题产生了浓厚的兴趣。
|
||||
|
||||
两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而,刷题就如同玩“扫雷”游戏,自学能力强的同学能够顺利地将地雷逐个排掉,而基础不足的同学很可能被炸的满头是包,并在挫折中步步退缩。通读教材书籍也是一种常见做法,但对于面向求职的同学来说,毕业季、投递简历、准备笔试面试已经占据了大部分精力,厚重的书籍往往变成了一项艰巨的挑战。
|
||||
两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力强的同学能够顺利地将地雷逐个排掉,而基础不足的同学很可能被炸的满头是包,并在挫折中步步退缩。通读教材书籍也是一种常见做法,但对于面向求职的同学来说,毕业季、投递简历、准备笔试面试已经占据了大部分精力,厚重的书籍往往变成了一项艰巨的挑战。
|
||||
|
||||
如果你也面临类似的困扰,那么很幸运这本书找到了你。本书是我对此问题的给出的答案,虽然不一定正确,但至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。
|
||||
如果你也面临类似的困扰,那么很幸运这本书找到了你。本书是我对此问题的给出的答案,即使不是最优解,也至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。
|
||||
|
||||
<h3 align="left"> 作者简介 </h3>
|
||||
|
||||
|
|