You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hello-algo/en/docs/chapter_preface/suggestions.md

256 lines
9.1 KiB

11 months ago
---
comments: true
---
8 months ago
# 0.2   How to read
11 months ago
!!! tip
For the best reading experience, it is recommended that you read through this section.
8 months ago
## 0.2.1   Writing conventions
11 months ago
10 months ago
- Chapters marked with '*' after the title are optional and contain relatively challenging content. If you are short on time, it is advisable to skip them.
8 months ago
- Technical terms will be in boldface (in the print and PDF versions) or underlined (in the web version), for instance, <u>array</u>. It's advisable to familiarize yourself with these for better comprehension of technical texts.
10 months ago
- **Bolded text** indicates key content or summary statements, which deserve special attention.
8 months ago
- Words and phrases with specific meanings are indicated with “quotation marks” to avoid ambiguity.
- When it comes to terms that are inconsistent between programming languages, this book follows Python, for example using `None` to mean `null`.
10 months ago
- This book partially ignores the comment conventions for programming languages in exchange for a more compact layout of the content. The comments primarily consist of three types: title comments, content comments, and multi-line comments.
11 months ago
=== "Python"
```python title=""
8 months ago
"""Header comments for labeling functions, classes, test samples, etc"""
11 months ago
10 months ago
# Comments for explaining details
11 months ago
"""
10 months ago
Multiline
comments
11 months ago
"""
```
=== "C++"
```cpp title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "Java"
```java title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "C#"
```csharp title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "Go"
```go title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "Swift"
```swift title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "JS"
```javascript title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "TS"
```typescript title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "Dart"
```dart title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "Rust"
```rust title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
=== "C"
```c title=""
10 months ago
/* Header comments for labeling functions, classes, test samples, etc */
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
/**
10 months ago
* Multiline
* comments
11 months ago
*/
```
8 months ago
=== "Kotlin"
```kotlin title=""
/* Header comments for labeling functions, classes, test samples, etc */
// Comments for explaining details.
/**
* Multiline
* comments
*/
```
11 months ago
=== "Zig"
```zig title=""
10 months ago
// Header comments for labeling functions, classes, test samples, etc
11 months ago
10 months ago
// Comments for explaining details.
11 months ago
10 months ago
// Multiline
// comments
11 months ago
```
8 months ago
## 0.2.2 &nbsp; Efficient learning via animated illustrations
11 months ago
10 months ago
Compared with text, videos and pictures have a higher density of information and are more structured, making them easier to understand. In this book, **key and difficult concepts are mainly presented through animations and illustrations**, with text serving as explanations and supplements.
11 months ago
7 months ago
When encountering content with animations or illustrations as shown in Figure 0-2, **prioritize understanding the figure, with text as supplementary**, integrating both for a comprehensive understanding.
11 months ago
8 months ago
![Animated illustration example](../index.assets/animation.gif){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-2 &nbsp; Animated illustration example </p>
11 months ago
8 months ago
## 0.2.3 &nbsp; Deepen understanding through coding practice
11 months ago
7 months ago
The source code of this book is hosted on the [GitHub Repository](https://github.com/krahets/hello-algo). As shown in Figure 0-3, **the source code comes with test examples and can be executed with just a single click**.
11 months ago
10 months ago
If time permits, **it's recommended to type out the code yourself**. If pressed for time, at least read and run all the codes.
11 months ago
10 months ago
Compared to just reading code, writing code often yields more learning. **Learning by doing is the real way to learn.**
11 months ago
8 months ago
![Running code example](../index.assets/running_code.gif){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-3 &nbsp; Running code example </p>
11 months ago
10 months ago
Setting up to run the code involves three main steps.
11 months ago
10 months ago
**Step 1: Install a local programming environment**. Follow the [tutorial](https://www.hello-algo.com/chapter_appendix/installation/) in the appendix for installation, or skip this step if already installed.
11 months ago
10 months ago
**Step 2: Clone or download the code repository**. Visit the [GitHub Repository](https://github.com/krahets/hello-algo).
If [Git](https://git-scm.com/downloads) is installed, use the following command to clone the repository:
11 months ago
```shell
git clone https://github.com/krahets/hello-algo.git
```
7 months ago
Alternatively, you can also click the "Download ZIP" button at the location shown in Figure 0-4 to directly download the code as a compressed ZIP file. Then, you can simply extract it locally.
11 months ago
8 months ago
![Cloning repository and downloading code](suggestions.assets/download_code.png){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-4 &nbsp; Cloning repository and downloading code </p>
11 months ago
7 months ago
**Step 3: Run the source code**. As shown in Figure 0-5, for the code block labeled with the file name at the top, we can find the corresponding source code file in the `codes` folder of the repository. These files can be executed with a single click, which will help you save unnecessary debugging time and allow you to focus on learning.
11 months ago
8 months ago
![Code block and corresponding source code file](suggestions.assets/code_md_to_repo.png){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-5 &nbsp; Code block and corresponding source code file </p>
11 months ago
8 months ago
## 0.2.4 &nbsp; Learning together in discussion
11 months ago
10 months ago
While reading this book, please don't skip over the points that you didn't learn. **Feel free to post your questions in the comment section**. We will be happy to answer them and can usually respond within two days.
11 months ago
7 months ago
As illustrated in Figure 0-6, each chapter features a comment section at the bottom. I encourage you to pay attention to these comments. They not only expose you to others' encountered problems, aiding in identifying knowledge gaps and sparking deeper contemplation, but also invite you to generously contribute by answering fellow readers' inquiries, sharing insights, and fostering mutual improvement.
11 months ago
8 months ago
![Comment section example](../index.assets/comment.gif){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-6 &nbsp; Comment section example </p>
11 months ago
8 months ago
## 0.2.5 &nbsp; Algorithm learning path
11 months ago
10 months ago
Overall, the journey of mastering data structures and algorithms can be divided into three stages:
11 months ago
10 months ago
1. **Stage 1: Introduction to algorithms**. We need to familiarize ourselves with the characteristics and usage of various data structures and learn about the principles, processes, uses, and efficiency of different algorithms.
2. **Stage 2: Practicing algorithm problems**. It is recommended to start from popular problems, such as [Sword for Offer](https://leetcode.cn/studyplan/coding-interviews/) and [LeetCode Hot 100](https://leetcode.cn/studyplan/top-100- liked/), and accumulate at least 100 questions to familiarize yourself with mainstream algorithmic problems. Forgetfulness can be a challenge when you start practicing, but rest assured that this is normal. We can follow the "Ebbinghaus Forgetting Curve" to review the questions, and usually after 3~5 rounds of repetitions, we will be able to memorize them.
3. **Stage 3: Building the knowledge system**. In terms of learning, we can read algorithm column articles, solution frameworks, and algorithm textbooks to continuously enrich the knowledge system. In terms of practicing, we can try advanced strategies, such as categorizing by topic, multiple solutions for a single problem, and one solution for multiple problems, etc. Insights on these strategies can be found in various communities.
11 months ago
7 months ago
As shown in Figure 0-7, this book mainly covers “Stage 1,” aiming to help you more efficiently embark on Stages 2 and 3.
11 months ago
8 months ago
![Algorithm learning path](suggestions.assets/learning_route.png){ class="animation-figure" }
11 months ago
8 months ago
<p align="center"> Figure 0-7 &nbsp; Algorithm learning path </p>