---
comments: true
---

# 如何使用本书

## 图文搭配学

视频和图片相比于文字的信息密度和结构化程度更高，更容易让人理解。在本书中，重点和难点知识会主要以动画、图解的形式呈现，而文字的作用则是作为动画和图的解释与补充。

在阅读本书的过程中，若发现某段内容提供了动画或图解，**建议你以图为主线**，将文字内容（一般在图的上方）对齐到图中内容，综合来理解。

![algorithm_animation](suggestions.assets/algorithm_animation.gif)

## 使用源代码

!!! tip "前置工作"

    安装本地编程环境。若无，可以参照下节 [编程环境安装](https://www.hello-algo.com/chapter_preface/installation/) 。

### 下载代码仓

如果已经安装 [Git](https://git-scm.com/downloads) ，可以通过命令行来克隆代码仓。

```shell
git clone https://github.com/krahets/hello-algo.git
```

当然，你也可以点击 “Download ZIP” 直接下载代码压缩包，解压即可。

![download_code](suggestions.assets/download_code.png)

### 运行源代码

本书提供配套 Java, C++, Python 代码仓（后续可能拓展支持语言）。书中的代码栏上若标有 `*.java` , `*.cpp` , `*.py` ，则可在仓库 codes 文件夹中找到对应的 **代码源文件** 。

![code_md_to_repo](suggestions.assets/code_md_to_repo.png)

这些源文件中包含测试样例，可以直接运行，帮助你省去不必要的调试时间，可以将精力集中在学习内容上。

!!! tip "代码学习建议"

    若学习时间紧张，请至少 **将所有代码通读并运行一遍**。若时间允许，强力建议 **对照着代码自己敲一遍**，逐渐锻炼肌肉记忆。相比于读代码，自己写的过程会带来新的收获。

![running_code](suggestions.assets/running_code.gif)

## 参与讨论区

阅读本书时，请不要 “惯着” 那些弄不明白的知识点。如果有任何疑惑，可以在评论区留下你的问题，小伙伴们和我都会给予解答（我一般 2 ~ 3 天看一次评论区）。

同时，也希望你可以多花时间逛逛评论区。一方面，可以看看大家遇到了什么问题，反过来查漏补缺，这往往可以引起更加深度的思考。另一方面，也希望你可以慷慨地解答小伙伴们的问题、分享自己的见解，大家一起加油与进步！

![comment](suggestions.assets/comment.gif)

## 算法学习 “三步走”

**第一阶段，算法入门，也正是本书的定位。** 熟悉各种数据结构的特点、用法，学习各种算法的工作原理、用途、效率等。

**第二阶段，刷算法题。** 可以先从热门题单开刷，推荐 [剑指 Offer](https://leetcode.cn/problem-list/xb9nqhhg/)、[LeetCode 热题 HOT 100](https://leetcode.cn/problem-list/2cktkvj/) ，先积累至少 100 道题量，熟悉大多数的算法问题。刚开始刷题时，“遗忘” 是最大的困扰点，但这是很正常的，请不要担心。学习中有一种概念叫 “周期性回顾” ，同一道题隔段时间做一次，当做了三遍以上，往往就能牢记于心了。

**第三阶段，搭建知识体系。** 在学习方面，可以阅读算法专栏文章、解题框架、算法教材，不断地丰富知识体系。在刷题方面，可以开始采用进阶刷题方案，例如按专题分类、一题多解、一解多题等，刷题方案在社区中可以找到一些讲解，在此不做赘述。

![learning_route](suggestions.assets/learning_route.png)
