Skip to content

Commit d0240d0

Browse files
committed
修正内容描述
1 parent e6a5596 commit d0240d0

File tree

5 files changed

+144
-204
lines changed

5 files changed

+144
-204
lines changed

README.md

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,66 @@
1-
# 算法通关手册(LeetCode)
1+
## 1. 本书简介
22

3-
## 01. 关于本书
3+
本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。
44

55
- 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。
66
- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。
77
- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。
88
- 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。
99

10-
| 在线阅读 | https://algo.itcharge.cn |
11-
| -------- | ------------------------------------ |
12-
| 开源地址 | https://github.com/itcharge/AlgoNote |
10+
### 1.1 源码地址
1311

14-
<p align="center">
15-
<img src="./Assets/Images/algo-book-light.png" width="395">
16-
<img src="./Assets/Images/algo-book-dark.png" width="395">
17-
</p>
18-
## 02.
12+
本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」****「Fork」**,这是对我最大的鼓励和支持。
1913

20-
我是一名 iOS / macOS 的开发程序员,另外也是北航软院的硕士。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。
14+
- Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote)
15+
16+
### 1.2 目标读者
17+
18+
- 拥有 Python 编程基础或其他编程语言基础的编程爱好者
19+
- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员
20+
- 对算法感兴趣的计算机专业学生或程序员
21+
- 想要提升编程思维和问题解决能力的开发者
22+
23+
### 1.3 内容结构
24+
25+
本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分:
26+
27+
- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。
28+
- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。
29+
- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。
30+
- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。
31+
- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。
32+
- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。
33+
- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。
34+
- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。
35+
- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。
36+
- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。
37+
38+
### 1.4 使用说明
39+
40+
- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。
41+
- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。
42+
- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。
43+
- 建议按照章节顺序学习,循序渐进地掌握各个知识点。
44+
- 每章末尾都配有练习题,建议及时完成以巩固所学知识。
45+
46+
## 2. 相关说明
47+
48+
### 2.1 关于作者
49+
50+
我是一名 iOS / macOS 的开发程序员,研究生毕业于北航软件学院。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。
2151

2252
我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。
2353

24-
![](./Assets/Images/itcharge-qr-code.png)
54+
### 2.2 互助与勘误
55+
56+
限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [[email protected]](mailto:[email protected]),我将不胜感激。
57+
58+
### 2.3 版权说明
59+
60+
- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。
61+
- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/)[力扣中国](https://leetcode.cn/) 所有。
62+
63+
### 2.4 致谢
2564

26-
## 04. 版权说明
65+
在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。
2766

28-
- 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。
29-
- 本教程中的所有题目版权均归 [LeetCode](https://leetcode.com/)[力扣中国](https://leetcode.cn/) 所有。

docs/00_preface/00_01_about_the_book.md

Lines changed: 0 additions & 73 deletions
This file was deleted.

docs/00_preface/00_01_preface.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
## 1. 创作历程
2+
3+
### 1.1 创作起因
4+
5+
我想写一本通俗易懂的算法书已经很久了,久到大概有 7 年那么久。至今我还记得大学时曾立下的 flag:**我要把我所学到的算法知识总结起来,整理成册,编纂成书,然后大大方方的在封面上写上自己的名字,再将它分享给所有喜欢学习算法的朋友们看。**
6+
7+
结果是万万没想到,一晃过去,毕业后参加工作都已经 6 年了,每天忙于开发需求、业务逻辑、项目文档,写算法书这件事也跟其他大多数的待办事项一样,被无限制的闲置在一旁,再也不管不顾了。
8+
9+
直到 2021 年 3 月底的时候,在朋友的怂恿下,我们建了一个算法群,制定了一个为期 3 个月的算法打卡计划(2021 年 4 月 ~ 6 月),这个计划的唯一规则就是:连续两天不刷题就会被踢出群。
10+
11+
就这样我们一群小伙伴们(39 个人)开启了为期 3 个月的刷题计划。3 个月过后,最终只有 13 个人成功完成了刷题计划,另外三分之二的人都因为打卡失败被踢出群了。**这些失败的人中也包括我自己,我是在计划即将结束的时候,一次周末忘记了打卡,惨遭淘汰。**
12+
13+
虽然这次我的刷题计划失败了,但是经过这 3 个月的刷题练习,让我重新拾起了学习算法的乐趣,并且把刷题变成了自己的日常习惯。在工作之余,我总是习惯性地打开 LeetCode,刷上几道题,然后写下题解,这种感觉很充实也很有成就感。
14+
15+
在这次刷题计划结束之后,2021 年 7 月份的时候,我们重新建立了算法打卡群,并持续到了今天。
16+
17+
就这样,刷题打卡成了我们的日常,群里的小伙伴也越来越多。我们每天刷题,写题解,在群里讨论每日题目的思路,提出问题和回答问题、探讨更好的求解思路。再后来群里的一些小伙伴们开始参加周赛、双周赛,在比赛结束之后我们还会交流赛题思路、做题心得。
18+
19+
### 1.2 输出是最好的学习方法
20+
21+
在写刷算法题、写题解的过程中,我又开始写算法和数据结构的基础知识,于是就有了现在这个开源项目。后来我学会了用 hugo 搭建网站,就搭建了一个开源项目的电子书网站,方便大家在线阅读。
22+
23+
在写算法书的这个过程中,我发现一个秘籍:**只有「输出」才是最好的学习方法**。这也是「费曼学习法」的一个应用。
24+
25+
在写算法内容的时候,如果对一个概念不理解,或者有点模糊,我是不可能把它写清楚,并且也让别人看明白的。只有在参考了大量的算法书籍和大佬的博客,把其中的概念或算法理解透彻了,彻底弄明白了之后,才能够转换为通俗易懂的文字,让大家也看明白。
26+
27+
并且在刷题的过程中,也会有很多朋友和群里小伙伴,跟我一起进行算法知识探讨,帮我指正错误或者提出建议。这些指正和建议,在很大程度上帮助我改进文章内容和提高自己对算法的理解。就好像是学生在写作业,有专业的老师在帮我批改作业,帮助我进步一样。
28+
29+
就这样,经过一段时间的努力,我从 2021 年 7 月开始,到 2022 年 7 月底,历时整整 1 年,在 LeetCode 上刷了 1000 多题,并且在刷题的过程总结了一些算法知识和数据结构知识,终于写完了这本算法书,也就是 **「算法通关手册」**
30+
31+
## 2. 为什么要学习算法和数据结构
32+
33+
### 2.1 算法是程序员的底层能力
34+
35+
**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。
36+
37+
况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。
38+
39+
诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构****算法****编译原理****计算机网络****计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。
40+
41+
**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。**
42+
43+
### 2.2 算法是技术面试的必考内容
44+
45+
在互联网行业相关的技术面试中,**算法和数据结构知识** 几乎是所有公司的必考内容。众多知名互联网公司喜欢在面试中考察 LeetCode 上的算法题目,通常需要面试者对给定问题进行深入分析并提供解题思路。有时候,面试官还会要求面试者评估相关算法的时间复杂度和空间复杂度。面试官通过检验面试者对常用算法的熟悉程度和实现能力的方式,从而评估面试者解决实际问题的思维能力水平。
46+
47+
LeetCode 等平台上的算法题目已经成为行业标准。很多公司直接从这些平台选取题目或进行改编。通过系统性地练习这些题目,可以提高解决实际问题的能力。在面试中遇到类似问题时,就能更从容地应对。
48+
49+
学习算法需要循序渐进。从基础的数据结构开始,逐步掌握常见算法思想。每学习一个新概念,都要通过实际题目来巩固理解。这样积累下来,就能建立起完整的算法知识体系。
50+
51+
这本「算法通关手册」就是为了帮助读者系统学习算法知识而编写的。书中包含基础理论讲解和大量实战题目分析。通过理论学习和实践练习相结合的方式,读者可以真正掌握算法知识,提高解决问题的能力。无论是准备面试还是提升编程能力,这本书都能提供有价值的帮助。
52+

0 commit comments

Comments
 (0)