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

**《代码随想录》终于终于正式出版上市了！** （文末附购买链接，直接五折！）

[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，网站上都对应的Java，Python，Go，Js，C，Swift版本 基本可以满足大家的学习需求。

购买方式，可以扫下方二维码，也可以直接[点击这里，京东直达](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>

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

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


