波波算法笔记

Bob Peng

世界上没有“绝对困难”的内容,只有“简单但是不完整”的内容。

2025-04-08
世界上没有“绝对困难”的内容,只有“简单但是不完整”的内容。

这个学习方法是我从师兄那里听到的,觉得很有用,转载到此处!

这套学习方法,曾经帮助一个英语专业,计算机零基础的文科女生,用六个月的时间,达到了算法工程师面试要求,并熟练掌握了600+道 LeetCode 算法题,在校招拿下了腾讯算法岗offer。

现在我把它传授给你。

为什么你会学不懂?


我相信大部分人都没思考过这个问题,即使思考过,也都是简单的甩锅给智商。首先我认为,世界上没有"绝对困难"的内容,只有"简单但不完整"的内容。

因为所有概念,本质上都是一个"逻辑链条",一环接一环,只要把每一个环节的逻辑理解了,那你对这个概念本身就理解透了。

这条逻辑链路上的每一环其实都不难,那理解一个概念最困难的地方是什么呢?答案是填补这条链条上断裂的部分。

举个例子,现在你要让一个6岁的小孩子,理解函数的概念,需要填补哪些断裂的链路呢?

可能首先得让他明白,什么是机器?

你可以告诉他,家里有各种机器,冰箱吞进去各种东西,然后以更低的温度吐出来。微波炉吞进去各种东西,然后以更高的温度吐出来。

然后什么是函数呢?
函数其实就是一种机器,只不过是吞数字然后吐出其他数字的机器,我们可以发明好多这种吞数字的机器:
吞数字机器1:吞进去一个数字,吐出来这个数字加一,这就是f(x)=x+1,f 就是我们给这个机器取的名字
吞数字机器2:吞进去一个数字,吐出来这个数字减一,这就是g(x)=x-1
吞数字机器3:吞进去一个数字,吐出来这个数字加上他自己,这就是q(x)=2x

所以这个例子的目的,就是让大家明白,我们学习的概念其实都不困难,最困难的地方在于填补一个断裂的逻辑链条。

很多时候,教科书里会说:因为A,所以C。然而那个概念其实是“因为A,所以B,所以 C。 在这个时候我们就会头大:看不懂A和C之间的联系啊,难道是因为A所以D所以C?还是因为A所以E所以C?困难就是在这个过程中出现的。

相信都曾有过这个经历:自己苦苦思索了许久的难题,在别人一两句话的点拨下就豁然开朗。这种经历的本质就是对方告诉了你:A和C之间缺失的那个部分是B。从A到B到C的逻辑不难,难的是修补A和C之间断裂的逻辑链条。

因此,再次重复:世界上没有“绝对困难”的内容,只有“简单但是不完整”的内容。 我们学习的过程,其实就是不断填补缺失的逻辑链条的过程。

所以当你在学习上感到受挫时,记住上面这句话,而不是简单的甩锅给智商,它将会给你继续探索的信心和勇气。

接下来是操作层面,我面对一个视频教程,或者一个图文教程,具体怎么学?

提高大脑提取能力


为什么有的同学看每个阶段的视频/文档感觉都能看懂,一做阶段实战作业或者面试问一个场景题,就什么都不知道。因为没有对信息做深加工,没有反复提取,只是短期内熟悉了这些知识概念。

所以大家在学习的时候,如果是看视频,每3~5分钟就回顾总结刚才看的内容。如果是文档,每几页或每个小节就回去总结学的内容,比如画个小思维导图。

刚开始你会很痛苦,你会发现即使你刚学过,总结出来也很困难。这正是在锻炼里大脑的提取能力,我们在提取一个记忆时花费的精力越多,有关这个记忆的提取能力和记忆能力都会大大提升,能记得更加牢靠。

目标粉碎化=快速上瘾


大脑是有 working memory 的,不要等 working memory 快填满了再去总结复习,而是每一小段时间就去回顾一下,我学到了什么,能不能用自己的话总结出来。如果不能,说明刚才这小段内容我并没有真正理解,这时候要倒回去重新学习。

每次回顾总结,都是在给大脑正反馈,告诉大脑,我已经搞定了一个小任务。然后清空大脑,继续下一个任务。不断的正反馈,你会觉得收获满满,越学越上瘾。因为你会发现,你动手完成了这么多小任务,总结了这么多东西。

这背后的原理也简单,就跟玩游戏一样,大家想想看,你是看主播玩游戏通关更有成就感呢?还是自己亲自解锁关卡更有成就感?所以要自己动手总结,不要只是被动的跟着视频走。

而每三五分钟就去回顾总结,也是像游戏机制设计那样,目标粉碎化,让你频繁体验到完成目标的感觉。

最后大家记住一句话:学到了什么,远远大于学了什么。

你看的视频/文档,跟着做的笔记,都是你学了什么。而你自己脱离视频和文档对所学内容的总结,独立画的思维导图,才是你学到了什么。