zl程序教程

您现在的位置是:首页 >  后端

当前栏目

学算法像看天书,还有救吗?

算法 还有
2023-06-13 09:13:01 时间

作者 | 梁唐

出品 | 公众号:Coder梁(ID:Coder_LT)

大家好,我是梁唐。

昨天写了一篇文章介绍珂朵莉树,不出意料,看得人不多。不仅如此也有小伙伴私信我说,感觉算法太难,看了好几遍都没看懂。

你们一定想不到我看到私信的时候是什么感觉,我觉得他说得太对了,我刚开始看的时候也没看懂。

我后来仔细回想了一下,我发现还不只是这一个算法,几乎我所学会的每一个算法,在我当初最早学它的时候都觉得它非常非常难,很难很难理解。严重的时候,我甚至还一度对自己的智商产生了怀疑,难道真的是我不如其他人聪明?

虽然我一直坚信自己智商不至于有问题,但每次遇到想不出的难题,尤其是别人能想明白的难题的时候,总是会忍不住这么想。

直到我后来上了大学,发生了一件事情改变了看法。在大学里我遇到了一个非常厉害的学长,厉害到在当时acmer的圈子里他也是鼎鼎大名,单挑acm亚洲赛拿银,曾经打进了Google Codejam全球百强。他绝对是我目前为止见过的技术能力最强的人,几乎没有之一。

遇到这样的大神级人物,是个人都得仰望。不说敬若神明,至少我在心里觉得,应该没有什么算法能难得倒他了。

直到有一次暑假集训,我想出了一道他没能解开的问题。我想出了思路有些沾沾自喜,但没过多久,当天晚上学长就告诉我他想到了更好的方法,并且还写出了好几版代码做出了性能测试。而我,连自己想到的解法都没有写完。

那个时候我才幡然醒悟,大佬们之所以厉害,并不是因为他们开了挂,也并不是他们的脑子就特别灵光。只是他们愿意不停地挑战困难,不会轻易放弃。

虽然是一件很小的事情,但给我的触动很大。在那个瞬间,我感觉我身上好像有一扇看不见的门被打开了。那种感觉非常玄妙,说不清道不明,但我就是知道我成长了。

以前学算法看一两遍还看不明白,基本上就会先放到一边。之后如果有机会再碰到可能会再看一下,如果碰不到就不了了之了。所以虽然说起来算法学了好几年,但储备也就那么回事。到比赛前也有很多常用算法写不利索,一些高端的算法更是只听其名,从未写过。

但那天之后,我有一点找到了感觉。算法第一遍看不明白的时候,不再觉得畏惧,而是有了一份坦然,就有一种早就知道会看不懂的感觉,从而可以比较容易地开始第二次尝试。

有了这么一个小小的变化之后,我有了一个惊人的发现,几乎没有什么算法是能够第一遍就秒懂的,但也几乎没有什么算法是能撑过三个回合的,再难的数据结构,硬着头皮看到第三遍的时候,基本上就都懂了。

到这个时候又是觉得好气又是觉得好笑,现在才发现原来难住自己的困难就是这么个玩意,可气的是,要是早知如此,当年怎么说也得拿个金牌。

就像是昨天写的珂朵莉树,第一遍看的时候满脑袋问号,但冷静下来逐行分析,理一下思路再扣一下细节就融会贯通了,其实并没有那么复杂。要放在当年,我看个五分钟没看明白估计就打老头环去了。

回到问题本身,学算法感觉像看天书,还有救吗?

要我说答案很简单,有救,多看几遍就行。

喜欢本文的话不要忘记三连~