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