# 十年所学,终成《代码随想录》

《代码随想录》终于终于正式出版上市了! (文末附购买链接,直接五折!)

B站介绍 (opens new window)

最近这一年不少录友都问我,代码随想录什么时候出版啊?

其实我比大家还期待这一刻的到来!

先奉上几张书照片:(封面最终选定为梵高的画作,阿姆斯特丹,圣马迪拉莫,1888,海景)

其实在去年,也就是2020年我就已经将这本书的内容写好了,本以为可以很快出版,但我还是严重低估了写书的工作量。

因为自己对质量的追求,一直在不断打磨,所以又是一年快过去了。

《代码随想录》总共将近500页,70w字,200多个插图,真的处处都是心血

出书是一件浩大工程,比写文章难太多了,真的字字斟酌,大家看书里可能平平淡淡的一句话、一个词语、一个概念,我可能就查阅很多资料,反复推敲:表达是否准确,用词是否到位,生怕辜负了大家的期待

这是我自己平时书桌的场景:

这两年可以说我没有什么娱乐活动,业余生活极其枯燥,都花费在这本书上了,其中艰辛只有自己知道。

而此时当大家都能看到《代码随想录》这部作品的时候,其满足感对我来说已经足以。

写这本书用了两年,而真正消化、理解、研究这些算法知识,我用了整整十年,十年前我就开始写算法文章,妄图闯进算法的大门,这一写就是十年。

真的是十年所学,两年打磨,终成《代码随想录》!

所以当坚持一件事情的时候,一年、两年,甚至三年、五年,不足以看出其效果,但也许坚持十年的时候,才等到真正收获的时刻。

# 代码随想录的故事

《代码随想录》不是两年憋大招来个横空出世。

而是一点一点打磨出来的,其刷题顺序、题解内容、思考深度 都是经过了上10w录友的共同见证。

也正是这些内容,把大家汇聚在一起,一起攻克算法的一座又一座高山。

与此同时,也几乎每天都会有录友来专门私信我来表达自己的感激:

这些都是大家与“代码随想录”之间的故事,也欢迎大家在文章留言,说一说自己和 “代码随想录”之间的故事。

# 《代码随想录》有何不同?

大家在学习编程、算法,刷题的时候,真正的苦恼在于没有一套行之有效的刷题顺序

从何学起,先学什么,再学什么。力扣(Leetcode)上两千道题目,怎么刷,很多人刷题的效率低,主要体现在如下三点:

  • 找题
  • 找到了不合适现阶段做的题
  • 没有全套的优质题解可以参考

而市面上基本找不到真正能解决以上痛点的算法书籍。

一些书籍是每个知识点蜻蜓点水,然后就叫大家举一反三。

一些书籍是一堆题解堆在一起,让大家学起来感受不到知识的连贯性和系统性。

断片式的学习,效率怎么能高呢?

当初我在学习算法的时候,就深感其中的艰难,当我的题量达到一定数量时候,随着反复的琢磨和深入的思考,我再去回顾这些算法题目,发现如果要是按照合理的顺序来刷题,那效果一定是 事半功倍!

所以我将每一个专题中的题目按照由易到难的顺序进行编排,每一道题目所涉及的知识,前面都会有相应的题目做知识铺垫,做到环环相扣

建议大家按照章节顺序阅读本书,在阅读的过程中会发现我在题目编排上的良苦用心!

本书不仅在题目编排上精心设计,而且在针对读者最头痛的算法问题上做了详细且深入的讲解。

  • 关于动态规划,都知道递推公式的重要性,但dp数组的含义、dp数组的初始化、遍历顺序以及如何打印dp数组来排查Bug,这些都很重要。例如,解决背包问题的时候,遍历顺序才是最关键的,也是最难理解的。

  • 关于回溯算法,题目要求集合之间不可重复,那么就需要去重,各种资料都说要去重,但没有说清楚是“树层去重”还是“树枝去重”——这是我为了说明去重的过程而创造的两个词汇。

  • 关于KMP算法,都知道使用前缀表进行回退,可什么是前缀表,为什么一定要用前缀表,根据前缀表回退有几种方式,这些却没有说清楚,导致最后大家看的一头雾水。

  • 关于二叉树,不同的遍历顺序其递归函数究竟如何安排,递归函数什么时候需要返回值,什么时候不用返回值,什么情况下分别使用前、中、后序遍历,迭代法又要如何实现,这些都决定了对二叉树的理解是否到位。

同时我针对每一个专题的特点,整理出其通用的解法套路。

例如:

  • 在二叉树专题中,总结了递归“三部曲”来帮助读者掌握二叉树中各种遍历方式的写法。
  • 回溯算法中的回溯“三部曲”可以帮助读者理解回溯算法晦涩难懂的过程。
  • 动态规划中的动规“五部曲”可以帮助读者在一套思考框架下去解决动态规划题目。

再来说一说动态规划,在程序员面试中,动态规划是公认的最难掌握的算法,也是出现频率最高的算法。

如果仅仅讲解几道题目,即使再举一反三也远远达不到真正理解动态规划的程度

如果把动态规划的题目单纯地堆砌在一起,也只会让人越学越懵,陷入“一看就会,一写就废”的怪圈

讲清楚一道题容易,讲清楚两道题也容易,但把整个动态规划的各个分支讲清楚,把每道题目讲透彻,并用一套方法论把整个动态规划的题目贯彻始终就有难度了。

而帮助大家解决这个问题,这也是这本书的使命所在

购买方式,可以扫下方二维码,也可以直接点击这里,京东直达 (opens new window)

# 目录

这里不少录友会问,书的内容和Github:https://github.com/youngyangyang04/leetcode-master,和网站:programmercarl.com 有什么区别呢?

其实写文章相对来说是随意一些的,但书一定要非常严谨。

正如我本篇开头所说,书的内容其实一年前就写好的,但排版、纠错、打磨、重新画图,又花费了一年,所以书一定是更精细的,更严谨的。

《代码随想录》的排版看起来非常舒服,会让你发现 原来学算法 会上瘾!

《代码随想录》的推荐语,我都是颇为用心,不是随随便便找个人写一写推荐语来凑数的。

哈工大计算机王院长,百度杰出架构师猛哥,腾讯专家工程师强哥,王道论坛创始人风华哥,他们是在我学习工作的不同阶段里对我影响非常大的顶级巨佬

他们的学习方法,做事风格,都是值得每一位技术人学习。同时他们也是每一位技术人的榜样。

特别感谢巨佬们能在百忙之中阅读了本书的书稿,并给本书写了评语。

# 最后

我希望这本书,不仅仅是可以帮助大家学习编程,循序渐进的去学习算法,高效刷题,进大公司。

同时 当你把这本书放在自己的书桌前,床头前的时候,它也会给你一种乘风破浪的勇气!

正如封面(梵高,阿姆斯特丹,圣马迪拉莫,1888,海景),一只帆船在波涛汹涌的大海里扬帆远航!

《代码随想录》这就要和大家见面了,其实很多录友已经迫不及待:

这本书原价还挺贵的(毕竟比较厚),但这里申请到了京东五折优惠,大家可以速度下手了。

点击下方链接直接五折购买,全网最低价格了。海外的录友们可以在等几天,广州有货之后,就可以配送的海外了。

《代码随想录》使用的语言是C++,使用其他语言的录友可以看本书的讲解思路,刷题顺序,然后配合看网站:programmercarl.com,网站上都对应的Java,Python,Go,Js,C,Swift版本 基本可以满足大家的学习需求。

购买方式,可以扫下方二维码,也可以直接点击这里,京东直达 (opens new window)

最后也感谢录友们的陪伴,真心希望大家都有一个好的前程!

正如《代码随想录》正式出版一样,你所期盼,终将到来! 加油💪

@2021-2024 代码随想录 版权所有 粤ICP备19156078号