0.1 关于本书
0.1 关于本书
1. 本书简介
本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。
- 超详细的 「算法与数据结构」 基础讲解教程,「LeetCode 800+ 道」 经典题目详细解析。
- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。
- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。
- 本项目从各大知名互联网公司面试算法题中整理汇总了 「LeetCode 200 道高频面试题」,帮助面试者更有针对性的准备面试。
1.1 目标读者
- 拥有 Python 编程基础或其他编程语言基础的编程爱好者
- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员
- 对算法感兴趣的计算机专业学生或程序员
- 想要提升编程思维和问题解决能力的开发者
1.2 内容结构
本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分:
- 序言:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。
- 第 1 章 数组:讲解数组的基本概念、数组的基本操作。
- 第 2 章 链表:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。
- 第 3 章 堆栈、队列、哈希表:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。
- 第 4 章 字符串:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。
- 第 5 章 树结构:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。
- 第 6 章 图论:讲解图的基本概念、表示方法、遍历算法和经典应用。
- 第 7 章 基础算法:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。
- 第 8 章 动态规划:介绍动态规划的基础知识、各种动态规划题型的解法。
- 题目解析:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。
1.3 使用说明
- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。
- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。
- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。
- 建议按照章节顺序学习,循序渐进地掌握各个知识点。
- 每章末尾都配有练习题,建议及时完成以巩固所学知识。
2. 写作初衷与算法价值
2.1 本书起因
我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。
结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。
不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。
2.2 算法的重要性
「算法和数据结构」 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。
况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。
诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:数据结构、算法、编译原理、计算机网络、计算机体系结构 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。
学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。
3. 相关说明
3.1 互助与勘误
限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 i@itcharge.cn,我将不胜感激。
3.2 版权说明
- 本书采用 知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议 进行许可。
- 本书题解中的所有题目版权均归 LeetCode 和 力扣中国 所有。
3.3 致谢
在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。