最近自習室裏又興起了一陣刷題潮,你們相約刷題~git
今天和你們系統分享下我去年轉行時的一個刷題過程和方法,但願對你有所幫助。github
首先介紹下個人編程基礎,我學的是金融工程專業,碩士時學過 C++ 的課,這也是個人編程入門課(但我我的很是不推薦用 C++ 入門)。這門課的重點是 C++ 在金融領域的應用,好比給 Option 訂價,基本不涉及算法和數據結構。面試
因此我是有必定編程基礎的,可是對算法和數據結構是小白,也不懂空間複雜度和時間複雜度爲什麼物。算法
另外說明一下個人時間,我是在工做後纔開始刷題,因此是晚上和週末來刷,時間比較緊張,若是是學生的話在個人基礎上要多刷一些喲。編程
下面上乾貨。微信
我把個人刷題過程分爲 3 階段。數據結構
時間是 3 個月,作了 128 道題,平均天天 1-2 題。dom
這一階段刷題對我來講,是一個學習數據結構和算法的過程。數據結構和算法
因此若是是科班的同窗這一步就能夠跳過了。學習
常常有同窗問這個刷題順序問題:
我認爲在不一樣階段是不同的,那麼第一階段我是按照算法類型來刷,每一個類型大概花 1-2 周的時間。
那到底先刷哪一個類型呢?
刷 DP?
這不是勸退麼?
這裏對於小白來講,合理的學習曲線是很是重要的,不然一上來數據結構都不清楚去作難的算法題容易受打擊。
那麼怎樣纔是合理的學習曲線呢?
我說的不算,其餘人的也只是他我的經驗,而應該是看名校的口碑課程是怎麼安排的,看教授爲你制定的學習計劃。
好比第一週,咱們去刷排序算法。
那在這個具體的分類下,題目按什麼順序來作呢?
把題目按照頻率從高到低的順序來作,也就是出現頻率高,常考的咱們先作。
那對於每一道題應該怎麼作呢?
首先我會先本身思考 5 分鐘,那若是過了 5 分鐘尚未任何思路,就沒必要強求了,看答案吧。
Leetcode 有一個討論區,裏面有很是多的大神給的解答,重點不是看他的代碼,而是看他怎麼想的,怎麼分析的這個問題。
若是尚未理解,那我會去搜一下視頻講解。
這裏推薦一個小哥,也是我惟一推薦的 Leetcode 視頻講解:
國內的小夥伴可能不太方便看這個,你們在留言區說下你推薦的視頻講解吧~
對於在北美求職的同窗,這小哥的英文對面試也會很是有幫助。
這樣就把一個刷題計劃落實到了第一個分類、第一週、第一天該作什麼。
可是作完題不是就萬事大吉了,最重要的一步是須要吸取、內化成本身的。
我喜歡的是寫「解題報告」:
<,>
把這道題考查了哪些知識點,正確的思路是怎樣的,別人是怎麼想到的,代碼是怎麼寫的,代碼有什麼小技巧,都記錄下來。
這個是跟我當時一塊兒刷題的小夥伴學的,而且咱們互相講題,這樣效果更好。因此這裏強烈建議你們組隊刷題,互相監督提升。
那麼週末的時候複習和總結,我通常會作:
這裏看書不是指把書從頭看到尾,而是抓住重點章節,好比排序算法,那就參考 MIT 教授給你畫的重點,只看《算法導論》的這些章節,這纔是偷懶的正確打開方式啊。
不過,若是你的時間很充足,固然是系統的看書、上課更好了,會有更加平緩的學習曲線。
這樣 3 個月後我把基本的算法類型都刷過了,數據結構也都深刻理解了,剛開始作的題目也差很少都忘了,那麼開始第二階段。
這一階段我花了 1 個半月的時間,複習了第一階段的題目,並作了 100 道新題。
這一階段我是記錄在 Excel 裏:
第二階段作的差很少的時候,就把 Linkedin 設置爲 「open to market「,就會有獵頭找我了,那一旦拿到面試,就到了第三階段。
這一階段的重點是找到面試的狀態和感受,而且快速寫出代碼。
那麼個人方法是
這一階段的刷題順序我會按公司分類來刷,Leetcode 上有 company tag,若是是國內的小夥伴能夠參考這個 Github: https://github.com/afatcoder/LeetcodeTop
,列舉了國內幾大互聯網公司常考的面試題,那麼就會更有針對性的準備面試。
這一階段又陸陸續續作了 100 題,同時面完了全部的面試,就收工啦。
最後呢,再送個你們 3 個很好用的 Github 資料:
https://github.com/afatcoder/LeetcodeTop
https://github.com/wisdompeak/LeetCode
https://github.com/grandyang/leetcode
另外還有一份精選的刷題筆記也想送給你們,以前在視頻號裏推薦過了,尚未領的小夥伴在公衆號後臺回覆「筆記」就有啦。
那以上就是我刷題經驗的整個過程啦,若是還有任何問題歡迎留言或者私信告訴我,若是想加入自習室和你們一塊兒刷題的也歡迎加我微信,備註:自習。
我是小齊,紐約程序媛,點擊下方視頻瞭解個人故事吧~