『壹』 LeetCode按照怎樣的順序來刷題比較好
首先,如果你的時間特別緊,直接刷題當然沒有問題。但我的經驗是,如果你有相對寬裕的一些時間,除了想准備演算法面試以外,還想真正把演算法和數據結構的基礎打扎實,應該先認真學習經典的演算法和數據結構的底層原理。如果你的時間特別緊,可以直接跳到下面第二部分,「刷題篇」。
首先,這裡面的很多內容,是刷題涉及不到的。比如在刷題的時候,基本不會遇到讓你實現一個排序演算法的情況,如果需要排序,通常是直接調用語言的標准庫就好了。但是,我知道很多廠子的面試問題,恰恰就是「講一講快速排序是怎麼回事兒,歸並排序是怎麼回事兒,紅黑樹的基本原理」。
等等這類問題。另一方面,其實對這些基礎的演算法和數據結構的學習,很多時候並不完全是學習一個演算法這么簡單,而蘊含著對演算法思想的學習。我們可以看到,為了解決一個問題,我們可以如何設計演算法。
最典型的例子就是遞歸。很多同學都覺得遞歸很繞。但是,在我列的這個列表中,所有的演算法如果真的踏踏實實都搞明白了,我相信對遞歸是不怕的。無論是學習快速排序和歸並排序,還是實現各種樹結構中的基本操作。
都在不停地使用遞歸。我們在學習這些內容的時候,並非是簡單的死記硬背,而是在看一些演算法思想的具體應用。