Files
2025-05-19 17:11:04 +08:00

201 lines
12 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 十年所学,终成《代码随想录》
**《代码随想录》终于终于正式出版上市了!** (文末附购买链接,直接五折!)
[B站介绍](https://www.bilibili.com/video/BV13L4y1E7s4/)
最近这一年不少录友都问我,代码随想录什么时候出版啊?
**其实我比大家还期待这一刻的到来!**
先奉上几张书照片:(封面最终选定为梵高的画作,阿姆斯特丹,圣马迪拉莫,1888,海景)
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20220926101859.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20220926101946.png' width=500 alt=''> </img></div>
其实在去年也就是2020年我就已经将这本书的内容写好了本以为可以很快出版但我还是严重低估了写书的工作量。
因为自己对质量的追求,一直在不断打磨,所以又是一年快过去了。
**《代码随想录》总共将近500页70w字200多个插图真的处处都是心血**。
出书是一件浩大工程,比写文章难太多了,**真的字字斟酌,大家看书里可能平平淡淡的一句话、一个词语、一个概念,我可能就查阅很多资料,反复推敲:表达是否准确,用词是否到位,生怕辜负了大家的期待**。
这是我自己平时书桌的场景:
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211210175809.png' width=500 alt=''> </img></div>
这两年可以说我没有什么娱乐活动,业余生活极其枯燥,都花费在这本书上了,其中艰辛只有自己知道。
而此时当大家都能看到《代码随想录》这部作品的时候,其满足感对我来说已经足以。
写这本书用了两年,**而真正消化、理解、研究这些算法知识,我用了整整十年**,十年前我就开始写算法文章,妄图闯进算法的大门,这一写就是十年。
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209181522.png' width=500 alt=''> </img></div>
**真的是十年所学,两年打磨,终成《代码随想录》!**
所以当坚持一件事情的时候,一年、两年,甚至三年、五年,不足以看出其效果,但也许坚持十年的时候,才等到真正收获的时刻。
## 代码随想录的故事
《代码随想录》不是两年憋大招来个横空出世。
而是一点一点打磨出来的,其刷题顺序、题解内容、思考深度 都是经过了上10w录友的共同见证。
也正是这些内容,把大家汇聚在一起,一起攻克算法的一座又一座高山。
与此同时,也几乎每天都会有录友来专门私信我来表达自己的感激:
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182433.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182703.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182735.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183109.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183144.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183638.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183233.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183324.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183356.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183431.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183003.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182519.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183451.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209183524.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182638.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209182809.png' width=500 alt=''> </img></div>
这些都是大家与“代码随想录”之间的故事,也欢迎大家在文章留言,说一说自己和 “代码随想录”之间的故事。
## 《代码随想录》有何不同?
大家在学习编程、算法,刷题的时候,**真正的苦恼在于没有一套行之有效的刷题顺序**。
从何学起先学什么再学什么。力扣Leetcode上两千道题目怎么刷很多人刷题的效率低主要体现在如下三点
* 找题
* 找到了不合适现阶段做的题
* 没有全套的优质题解可以参考
而市面上基本找不到真正能解决以上痛点的算法书籍。
一些书籍是每个知识点蜻蜓点水,然后就叫大家举一反三。
一些书籍是一堆题解堆在一起,让大家学起来感受不到知识的连贯性和系统性。
断片式的学习,效率怎么能高呢?
当初我在学习算法的时候,就深感其中的艰难,当我的题量达到一定数量时候,随着反复的琢磨和深入的思考,我再去回顾这些算法题目,**发现如果要是按照合理的顺序来刷题,那效果一定是 事半功倍!**
所以我将每一个专题中的**题目按照由易到难的顺序进行编排,每一道题目所涉及的知识,前面都会有相应的题目做知识铺垫,做到环环相扣**。
**建议大家按照章节顺序阅读本书**,在阅读的过程中会发现我在题目编排上的良苦用心!
本书不仅在题目编排上精心设计,而且在针对读者最头痛的算法问题上做了详细且深入的讲解。
* 关于动态规划都知道递推公式的重要性但dp数组的含义、dp数组的初始化、遍历顺序以及如何打印dp数组来排查Bug这些都很重要。例如解决背包问题的时候遍历顺序才是最关键的也是最难理解的。
* 关于回溯算法,题目要求集合之间不可重复,那么就需要去重,各种资料都说要去重,但没有说清楚是“树层去重”还是“树枝去重”——这是我为了说明去重的过程而创造的两个词汇。
* 关于KMP算法都知道使用前缀表进行回退可什么是前缀表为什么一定要用前缀表根据前缀表回退有几种方式这些却没有说清楚导致最后大家看的一头雾水。
* 关于二叉树,不同的遍历顺序其递归函数究竟如何安排,递归函数什么时候需要返回值,什么时候不用返回值,什么情况下分别使用前、中、后序遍历,迭代法又要如何实现,这些都决定了对二叉树的理解是否到位。
同时我针对每一个专题的特点,整理出其通用的解法套路。
例如:
* 在二叉树专题中,总结了递归“三部曲”来帮助读者掌握二叉树中各种遍历方式的写法。
* 回溯算法中的回溯“三部曲”可以帮助读者理解回溯算法晦涩难懂的过程。
* 动态规划中的动规“五部曲”可以帮助读者在一套思考框架下去解决动态规划题目。
再来说一说动态规划,在程序员面试中,动态规划是公认的最难掌握的算法,也是出现频率最高的算法。
**如果仅仅讲解几道题目,即使再举一反三也远远达不到真正理解动态规划的程度**
**如果把动态规划的题目单纯地堆砌在一起,也只会让人越学越懵,陷入“一看就会,一写就废”的怪圈**
讲清楚一道题容易,讲清楚两道题也容易,但把整个动态规划的各个分支讲清楚,把每道题目讲透彻,并用一套方法论把整个动态规划的题目贯彻始终就有难度了。
**而帮助大家解决这个问题,这也是这本书的使命所在**
购买方式,可以扫下方二维码,也可以直接[点击这里,京东直达](https://union-click.jd.com/jdc?e=&p=JF8BAMQJK1olXg8EUVhVCkkWAV8IGV8WVAICU24ZVxNJXF9RXh5UHw0cSgYYXBcIWDoXSQVJQwYAUF1UDEsQHDZNRwYlGFh6NVkPcRdyHWwMZRlLHlQDUj02eEcbM244GFIXWQYAUV5VOHsXBF9edVsUXAcDVVtdDUgnAl8IHFkdXw4BU1lfCkoRM2gIEmtIFVpKAxVtOHsUM184G2sWbURsUVpcCEMVAjgIHAxBWFYAAVdfXE8QBGkBGQsdCQEFVgttCkoWB2Y4)
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211213180559.png' width=500 alt=''> </img></div>
## 目录
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211211092942.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/海报.png' width=500 alt=''> </img></div>
这里不少录友会问书的内容和Github:https://github.com/youngyangyang04/leetcode-master和网站:programmercarl.com 有什么区别呢?
其实写文章相对来说是随意一些的,但书一定要非常严谨。
正如我本篇开头所说,书的内容其实一年前就写好的,但排版、纠错、打磨、重新画图,又花费了一年,所以书一定是更精细的,更严谨的。
**《代码随想录》的排版看起来非常舒服,会让你发现 原来学算法 会上瘾!**
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211210211416.png' width=500 alt=''> </img></div>
《代码随想录》的推荐语,我都是颇为用心,不是随随便便找个人写一写推荐语来凑数的。
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211210155922.png' width=500 alt=''> </img></div>
哈工大计算机王院长,百度杰出架构师猛哥,腾讯专家工程师强哥,王道论坛创始人风华哥,**他们是在我学习工作的不同阶段里对我影响非常大的顶级巨佬**。
他们的学习方法,做事风格,都是值得每一位技术人学习。同时他们也是每一位技术人的榜样。
特别感谢巨佬们能在百忙之中阅读了本书的书稿,并给本书写了评语。
## 最后
我希望这本书,不仅仅是可以帮助大家学习编程,循序渐进的去学习算法,高效刷题,进大公司。
**同时 当你把这本书放在自己的书桌前,床头前的时候,它也会给你一种乘风破浪的勇气!**
正如封面(梵高,阿姆斯特丹,圣马迪拉莫,1888,海景),一只帆船在波涛汹涌的大海里扬帆远航!
《代码随想录》这就要和大家见面了,其实很多录友已经迫不及待:
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211204121717.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211204215908.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211205164800.png' width=500 alt=''> </img></div>
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211209100401.png' width=500 alt=''> </img></div>
这本书原价还挺贵的(毕竟比较厚),但这里申请到了京东五折优惠,大家可以速度下手了。
点击下方链接直接五折购买,全网最低价格了。海外的录友们可以在等几天,广州有货之后,就可以配送的海外了。
《代码随想录》使用的语言是C++使用其他语言的录友可以看本书的讲解思路刷题顺序然后配合看网站programmercarl.com网站上都对应的JavaPythonGoJsCSwift版本 基本可以满足大家的学习需求。
购买方式,可以扫下方二维码,也可以直接[点击这里,京东直达](https://union-click.jd.com/jdc?e=&p=JF8BAMQJK1olXg8EUVhVCkkWAV8IGV8WVAICU24ZVxNJXF9RXh5UHw0cSgYYXBcIWDoXSQVJQwYAUF1UDEsQHDZNRwYlGFh6NVkPcRdyHWwMZRlLHlQDUj02eEcbM244GFIXWQYAUV5VOHsXBF9edVsUXAcDVVtdDUgnAl8IHFkdXw4BU1lfCkoRM2gIEmtIFVpKAxVtOHsUM184G2sWbURsUVpcCEMVAjgIHAxBWFYAAVdfXE8QBGkBGQsdCQEFVgttCkoWB2Y4)
<div align="center"><img src='https://file1.kamacoder.com/i/algo/20211213180559.png' width=500 alt=''> </img></div>
最后也感谢录友们的陪伴,真心希望大家都有一个好的前程!
正如《代码随想录》正式出版一样,**你所期盼,终将到来! 加油💪**