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