我的爆款算法题解是怎么创作出来的?

教育   2022-03-17 10:05  
大家好,我是「负雪明烛」
前段时间,我在力扣(LeetCode 中国版)上写了一篇十分火爆的算法题解,它的点赞数遥遥领先,甚至比官方题解多出了 100 多个赞 👍🏻

这篇题解是当天的「每日一题」:838. 推多米诺[1]
这篇题解为什么能在当天就获得 100 多个赞,并且得到了众多好评呢?



今天就以这篇题解为例,分享一下我的算法题解创作方法

创作理念

在我的核心创作理念里面,清晰明了永远是第一位的
我写作算法题解 7 年了,在刚开始写作时只是为了记录这道题的想法,写给自己看的。因此,就是用最清晰的文字、用我最能理解的方式记录下来思路。
后来,我发现能做到清晰的思路+简洁的代码+长期地坚持写作的题解作者实在太少。
或许正是因为我不断地坚持,所以题解博客的阅读量才不断增加、粉丝持续增长。
在这种情况下,我的题解写作就明显变成了「面向读者」的写作。
现在,我会站在读者的角度去写:注重逻辑连贯性,通俗易懂,很少有专业词汇和公式。
每次写作之后,我都会多读几遍。针对不通顺、不清晰、有歧义的表达,我会不断修改。
让读者读懂,“说人话”,这就是我的创作理念。

写作前

在每次写作之前,我会读题,思考,做题。
题目做出来之后,不着急写作。我要参考别人的思路和代码,努力找到最简单易懂的解法。并且反复思考题目的关键点、突破口在哪。
举个例子,突破口有可能在数据规模,或者题目中的某句话,或者就是准确理解题意。
很多时候就是「一语点醒梦中人」,找准突破口就豁然开朗了。

写作中

做题之前,最重要的事情就是对题意的准确理解。即高中老师经常提到的「多审题」。
思路来自对题意的理解
因此在写作中,我会先详解题意,力争用最简单易懂的话,把题意阐述清楚。
然后,指出本题的关键点和突破口。(如果不理解题意、不明白思路来源,那么读者就看不懂这篇题解啊。就算看懂了,也不知道怎么想出来的,下次遇到同类型的题目一样做不出来。)


再根据突破口,用通俗易懂的方式写作全文。
在比较抽象、需要思考的地方,我会配图。图片是很重要的,「一图胜千言」。配图可能是自己的创作,或者从网络上搜索得到。


把解题方法讲清楚之后,再对代码关键逻辑进行讲解。
最后,给出三种语言(C++, Java, Python)的代码,给出时间复杂度。


写作后

为啥我还会关注写作后的事情呢?
首先,评论区可能有疑问,那么我尽量及时答疑。
我也会根据读者的问题,修改题解的表述。
当然也有很多时候,确实就是我写错了,那要及时改正啊!
另外,还有迫不得已的原因:实在搞不懂力扣的题解排序机制
如果不保持题解的热度,题解很可能就跑到第二页、第三页,甚至都要找不到了。
说出来都是泪,有一次我的题解本来挺受欢迎的,保持在第二第三的位置。但是后来突然就在列表页消失不见了。最诡异的是:我能在自己的列表页看到我的题解,而别人的列表页里看不到!



遇到这种情况只能找力扣的运营了。

总结

以上,就是我的算法题解创作思路了。
一篇爆款题解的诞生是很不容易的,我经常花一两个小时才能写出来一篇题解。
有时候,我花了很多时间写作一篇题解之后,自认为写得不错,但是阅读量却寥寥无几。
一路走来,最要感谢的就是各位读者朋友的认可。
我会按照自己的创作理念写作下去。


我是负雪明烛,本科、研究生就读于北京邮电大学。

坚持刷算法题 7 年,写了 1000 多篇题解,博客累计阅读量 400 万+。曾在字节跳动、阿里巴巴等大厂工作。

关注我,你可以获得优质算法题解、找工作经验技巧、模拟面试、大厂内推。

这是一个用心在做的公众号,欢迎点击关注+星标!


参考资料
[1]

838. 推多米诺: https://leetcode-cn.com/problems/push-dominoes/


负雪明烛
1000 篇算法题解的作者,国内互联网大厂程序员,技术分享爱好者。 爱好算法题解写作,擅长深入浅出讲解计算机知识,乐于分享大厂见闻。和读者一起刷算法题,拿 Offer,交朋友!