1. 程式人生 > >面試演算法愛好者書籍/OJ推薦

面試演算法愛好者書籍/OJ推薦

面試演算法愛好者書籍/OJ推薦


這個書單也基本適用於準備面試。

一、教科書

基本上一般的演算法課本介紹的範圍都不會超出演算法導論和演算法引論的範圍。讀完這兩本書,其它的演算法課本大致翻翻也就知道是什麼貨色了。

1. 演算法導論

s1959967這本書的內容用三個字來總結。就是偉光正。

基本上囊括了經常使用演算法的方方面面,證明鉅細無遺,十分適合剛開始學習的人閱讀。

可是這本書的一大問題就是,證明儘管具體。卻從未解釋演算法背後的理由。僅僅告訴你怎樣去做,卻從未探討過為何如此去做。

2.演算法引論(Introduction to Algorithms, a Creative Approach)

2演算法導論告訴我們how。這本書就力圖告訴我們why。書中極為強調的數學歸納法是建立演算法設計思維的重要一步。

另外,這本書的習題中有非常多常見的面試難題,包含skyline、眾數和名人問題。

3.Algorithms on Strings, Trees and Sequences

3

前兩本書對於一般的演算法描寫敘述已經比較全面了。

可是在字串相關演算法方面。這本書不可不讀。讀完之後,對字串演算法的全貌就會有一個瞭解,包含字尾樹和AC自己主動機這些尋常不太easy接觸到的資料結構。

作者是做生物的,所以後面有一些關於生物的應用,直接忽略就好,沒神馬意思。

4.具體數學

4這本書和前三本相比,就學院化了非常多。是非常數學的一本書,可是裡面介紹的非常多思想和樣例都非常好玩。

有大把時間就能夠讀讀娛樂。沒時間就算了。

二、雜書

5. Algorithmic Puzzles

6相比前面那幾本大作,這本小書更像是一本腦筋急轉彎的collection。

可是別小看這本書。它在題目之前提到的解題模式。是有著廣泛應用的。

6. 演算法設計與分析基礎

7

由於提到了上面那本書,這本書也就不得不提一下。演算法設計與分析基礎,相同總結了相似的解題方法,所以這兩本書可能是個互相“借鑑”的關係。

這本書的問題是,想法儘管好,可是習題實在是太爛了。爛到你不須要掌握他的那些想法就能解出來。

所以隨便看看就好。

7. 挑戰程式設計競賽

5

 

一本新的程式設計競賽解說書籍。

這本書相對於黑書。難度可能略有下降(我曾經匆匆看過黑書),可是同一時候語言文字上好了兩個數量級。反正我們也不是專業搞ACM競賽的。難度上看這本書足夠。

三、面試演算法

面試演算法中有非常多非常tricky的東西,在書本中不會提到。在競賽中也非常少遇到(某人將其命名為folk algorithms, 鄉野演算法)。這時候就須要專門用來準備面試的書籍登場了。

8. Cracking the Code Interview

8這書的題目難度比較正常。可是覆蓋面夠廣。

假設放在兩年前,這本書基本覆蓋了全部popular的面試演算法題目。

9. Elements of Programming Interviews

9這本書是一本非常討厭的書。內容新且難。每一個帶Ninja標誌的題目都值得好好琢磨。可是EPI的語言非常糟糕。

有的題目你得結合答案解說來看才明確題目是什麼意思。有的題目你得結合程式碼來看才知道題目是什麼意思。

另外這本書開頭的解題模式也值得好好研讀。

四、Online Judge

自己主動化的線上評測系統。

我認真做過的僅僅有兩個:

10. Leetcode。

http://oj.leetcode.com

至今收集了150道面試演算法題目,提供了線上的testcase自己主動測試。當中還頗有幾道難題。

當然大部分事實上是莫名其妙的水題。

一般來說leetcode認真做完,認真總結。全面理解,應對一般的面試演算法就不成什麼問題。

11. USACO training

這個training的前三章沒有超出leetcode難度太多。並且題目也不常見,是些非常好的補充。從第四章開始。難度就開始碾壓一般面試演算法了。

量力而行。

 

http://zalgorithm.com/blog/rhoaias/2014/04/14/%e9%9d%a2%e8%af%95%e7%ae%97%e6%b3%95%e7%88%b1%e5%a5%bd%e8%80%85%e4%b9%a6%e7%b1%8doj%e6%8e%a8%e8%8d%90/