覃超-算法训练营 学习方法分享[1] 如何精通一个领域
轉(zhuǎn)載說明:文章內(nèi)容來自 極客大學(xué)算法訓(xùn)練營。
版權(quán)歸極客大學(xué)、覃超老師以及算法訓(xùn)練營的小伙伴所有。如有涉及侵權(quán),請聯(lián)系我刪除,謝謝。
文章目錄
- 精通一個領(lǐng)域的三步走方式
- 切碎知識點
- 1. 切碎知識點
- 2. 如何達到職業(yè)頂尖玩家的水平
- 3. 對數(shù)據(jù)結(jié)構(gòu)和算法進行分類
- 1. 對數(shù)據(jù)結(jié)構(gòu)進行分類
- 2. 對算法進行分點
- 數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)腦圖和學(xué)習(xí)路線圖
- 刻意練習(xí)
- 刻意練習(xí)
- 練習(xí)基本功:區(qū)別職業(yè)選手和業(yè)余選手的根本。
- 反饋(feedback)
- 刷題技巧(五毒神掌)
- 1. 切題四件套
- 2. 五毒神掌(五遍刷題法,任何題目都至少刷5遍)
- 第1遍:(適合初次練習(xí))
- 第2遍:(在第1遍的基礎(chǔ)之上,這時候沒必要看他人的解法了)
- 第3遍:(在第2遍的基礎(chǔ)之上,過了24小時之后,做前一天做過的題目)
- 第4遍:(第3遍過了一周之后,反復(fù)回來練習(xí)相同的題目,同時對于不熟練的題目進行專項練習(xí)) 完成了第4遍,基本上對于相關(guān)知識點掌握的比較牢固了
- 第5遍 :(針對面試,面試前一個星期、兩個星期進行恢復(fù)性訓(xùn)練。)
精通一個領(lǐng)域的三步走方式
切碎知識點
1. 切碎知識點
- 庖丁解牛的故事
- 將算法數(shù)據(jù)結(jié)構(gòu)分解成一塊一塊相對簡單化、脈絡(luò)化的知識腦圖,脈絡(luò)相連。
- 引用Elon Musk的話:(引自reddit):
任何一個知識體系都是一棵樹,如果要掌握某個領(lǐng)域的關(guān)鍵知識,就需要將知識變成一顆樹狀結(jié)構(gòu).有最基本的根,然后分出主干、分出枝葉。最后每個知識點和你所熟悉的知識掛靠在一起,成為樹狀結(jié)構(gòu)。
人腦不適合記憶、理解孤立的知識,腦圖有助于理解。
2. 如何達到職業(yè)頂尖玩家的水平
如果只是停留在和寢室室友一盤盤打游戲的話,無法達到職業(yè)水平
頂級玩家都要把每部分專門拿出來練習(xí),不斷反復(fù)練習(xí)、刻意練習(xí),可以達到職業(yè)頂尖水平。
3. 對數(shù)據(jù)結(jié)構(gòu)和算法進行分類
1. 對數(shù)據(jù)結(jié)構(gòu)進行分類
- 一維數(shù)據(jù)結(jié)構(gòu)中,高級數(shù)據(jù)結(jié)構(gòu)是面試的重點
- 二維數(shù)據(jù)結(jié)構(gòu)可以看成從一維數(shù)據(jù)結(jié)構(gòu)中泛化而來
2. 對算法進行分點
前三點類似于幾何公理,是算法的基礎(chǔ),是所有算法、數(shù)據(jù)結(jié)構(gòu)的基石。最樸素的運算操作。
最后將算法化繁為簡之后,可以發(fā)現(xiàn)它的根本就是找到它的重復(fù)單元,基于重復(fù)單元泛化成高級數(shù)據(jù)結(jié)構(gòu)。所有的復(fù)雜算法,其實就是找它的重復(fù)單元是什么。
五點高級算法:
數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)腦圖和學(xué)習(xí)路線圖
先默識數(shù)據(jù)結(jié)構(gòu),先理解概念點,后面慢慢上手掌握,同時在學(xué)習(xí)細分知識的時候,不斷復(fù)習(xí)。(比如某一算法的時間復(fù)雜度、空間復(fù)雜度等)
刻意練習(xí)
刻意練習(xí)
練習(xí)基本功:區(qū)別職業(yè)選手和業(yè)余選手的根本。
刷算法題的最大誤區(qū):做一個算法題目的時候,只做一遍,這就是練習(xí)和切題的最大誤區(qū)。一遍是完全不夠的。就像是體育選手,一個動作不可能只做一遍就熟練,也沒法將其變成一個條件反射的動作。
- 過遍數(shù):類似于背單詞,要多背幾遍。
- 五遍刷題法(五毒神掌)
- 練習(xí)自己的弱項,練習(xí)實力上缺陷的地方。走出舒適區(qū)。
- 拿CS游戲為例: 開黑很爽,專項練習(xí)更有助于提高。可以專門開地圖練習(xí)自己不熟悉的槍(如AK),越是不熟悉而且平時常用,越要多練習(xí)。
- 在學(xué)習(xí)動態(tài)規(guī)劃的時候,主動刻意練習(xí)二十上百道題,逼自己練習(xí),可以達到熟練的水平。
- 國家隊乒乓球練習(xí):反復(fù)練習(xí)一個動作,先無球,后有球,每天堅持練習(xí),將基本功練扎實。(不要煩leetcode上的題目過于重復(fù),這有助于練習(xí)基本功)
- 職業(yè)臺球選手,在練習(xí)時都是練習(xí)很工整的球陣型。就類似于在leetcode上反復(fù)不斷的練習(xí)【典型的】【同一個】題目。不斷的過遍數(shù)。
- 內(nèi)心不要浮躁,不要總想著用一些高大上的框架。先將基本功練好,后面在工程中coding才能事半功倍。職業(yè)選手的訓(xùn)練方法如此,何況普通人。
反饋(feedback)
反饋分為兩種:主動反饋和被動反饋
刷題技巧(五毒神掌)
1. 切題四件套
在寫任何一個題目、面試答一個題目之前,先養(yǎng)成四步系統(tǒng)化的思考題目的方式(切題四件套):
- Compare(space/time)
- optimal(加強)
2. 五毒神掌(五遍刷題法,任何題目都至少刷5遍)
第1遍:(適合初次練習(xí))
- 如果在思考時間內(nèi)沒有任何思路,不知道怎么做的話也很正常。
- 適用于上一點中沒有任何思路的情況下,有思路的話直接Coding就行了。
- 同時注意比較多解法,比較解法優(yōu)劣。
- 算法的本身是要理解、運用的,而不是自己發(fā)明創(chuàng)造
- 背誦和默寫很重要,在背誦和默寫的基礎(chǔ)上,可以慢慢做到理解。
第2遍:(在第1遍的基礎(chǔ)之上,這時候沒必要看他人的解法了)
- 馬上自己寫 – > leetcode上提交,不斷Debug修改
- 多種解法比較、體會–>優(yōu)化。比較不同解法的時間、內(nèi)存消耗。
- 對于執(zhí)行時間長的Code,多想優(yōu)化策略。
- 直到所有不同解法都是優(yōu)的(領(lǐng)先90%以上,80%也不錯)。
第3遍:(在第2遍的基礎(chǔ)之上,過了24小時之后,做前一天做過的題目)
- 對于不同解法熟練程度不一樣,針對性的對自己不是特別熟的題目進行專項練習(xí)。
第4遍:(第3遍過了一周之后,反復(fù)回來練習(xí)相同的題目,同時對于不熟練的題目進行專項練習(xí)) 完成了第4遍,基本上對于相關(guān)知識點掌握的比較牢固了
第5遍 :(針對面試,面試前一個星期、兩個星期進行恢復(fù)性訓(xùn)練。)
- 將之前做過的題目再做一遍
- 時間視面試準備程度而定,按照自己的時間計劃安排
預(yù)期達到的效果:看到一道算法題,馬上就能產(chǎn)生【肌肉式記憶】,并馬上能得到相關(guān)的系列解法(解法1、解法2、解法3…,同時清楚知道所有解法的優(yōu)劣程度)
總結(jié)
以上是生活随笔為你收集整理的覃超-算法训练营 学习方法分享[1] 如何精通一个领域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]如何切换多个GitHub账号
- 下一篇: [转] vim基础