刷題太遭罪怎么辦?這個算法基地專為小白量身打造,還帶動畫
如何有效地刷算法題?刷題小白最新打卡地。
算法很重要,但算法也是學起來最難,最令人生畏的。算法千千萬,不知該如何下手?
經常看到有人抱怨:剛開始刷題時,自己很迷茫,不知道從何刷起,也看不懂別人寫的題解。思路飛來飛去,有時候以為是這個知識點重要,但有時又認為自己走錯了路,結果學了半天,越刷越亂,時間、經歷都白白浪費。
其實,學算法,刷題蠻干是不行的,需要遵循科學的方法。
學習算法可能并不只是拼智商,可以通過后天的學習進行掌握,這就需要講究技巧。方法找對了,可以起到事半功倍的效果。
近日,在 Github 上就有人開源了一個項目,該項目是專門為剛開始刷題的同學準備的算法基地,項目作者立志用動畫將晦澀難懂的算法說得通俗易懂。上線僅僅兩天,收獲九百多星。

項目地址:
https://github.com/chefyuan/algorithm-base
刷題大綱:
https://mp.weixin.qq.com/s/fTMzLrv5Ou2Xf3_br80J0g
科學刷題,有妙招
項目作者分門別類地將算法分成幾大部分:數據結構、字符串匹配算法、排序算法、排序算法秒殺題目、數組篇、求和問題、求次數問題、鏈表篇、雙指針、棧和隊列等。依據作者的思路進行刷題,問題應該不大。
在每個算法模塊中,包含動畫模擬、繪圖解析,可謂是圖文并茂,用動畫的方式將晦澀難懂的算法描述成通俗易懂的語言。
項目作者表示,該項目會一直維護,希望對各位有一丟丟幫助。另外給剛開始刷題,但是不知道從哪里開始刷的同學,整理了一份刷題大綱,可以先按這個順序刷,刷完之后應該就能入門了。
在字符串匹配算法模塊中,項目作者列舉了三個示例:字符串匹配 BF 算法、BM 算法、KMP 算法。

以字符串匹配 BF 算法為例,點擊相應的算法,會鏈接到對應的算法主頁。在算法主頁,項目作者通過詼諧幽默的話語向讀者介紹了什么是字符串匹配。然后進入主題,對這一概念進行定義:設 S 和 T 是給定的兩個串,在主串 S 中找到模式串 T 的過程稱為字符串匹配,如果在主串 S 中找到 模式串 T ,則稱匹配成功,函數返回 T 在 S 中首次出現的位置,否則匹配不成功,返回 -1。然后通過圖示的方式供讀者理解。

在講到算法時,項目作者采用動圖的形式,將抽象的算法具象化,為很多算法研究者帶來便利,通過動圖,就能很好地理解算法,這也是該項目最具創新的地方。

字符串匹配 BF 算法動圖展示。
將算法向讀者介紹清楚后,接著就是依據算法解決經典問題,將思路轉換為代碼。當你確定題目都已經理解,并且分析推導出了題目的解法后,你才開始思考如何將自己的思路轉換成代碼。
有時,將一個思路轉換成算法是很容易且自然的;但有時,有些思路轉換成代碼,是很有難度的事情。
項目作者將思路轉代碼這件事做得很好,將題目描述、題目解析、題目代碼都講解的非常清楚,依據作者的思路,很快就能掌握這個算法的精髓,可謂是省時又省力。
在數組篇中,以兩數之和為例:項目作者將兩數之和分解為題目描述、示例、雙指針(暴力)法、解析、題目代碼、哈希表、動圖解析等內容。
哈希表解析項目作者是這樣描述的「哈希表的做法很容易理解,我們只需通過一次循環即可,假如我們的 target 值為 9,當前指針指向的值為 2 ,我們只需從哈希表中查找是否含有 7,因為 9 - 2 =7 。如果含有 7 我們直接返回即可,如果不含有則將當前的 2 存入哈希表中,指針移動,指向下一元素。注:key 為元素值,value 為元素索引。」然后就是動圖展示。

哈希表解析動圖展示。
本文只介紹了其中兩個算法示例,剛開始刷題的同學,如果不知道該怎么刷,可以按照項目作者給出的思路,一氣刷下來,算法基礎應該問題不大,循序漸進,必能取得好的效果。