面試算法愛好者書籍/OJ推薦
面試算法愛好者書籍/OJ推薦
這個書單也基本適用於準備面試。
一、教科書
基本上一般的算法課本介紹的範圍都不會超出算法導論和算法引論的範圍。讀完這兩本書,其它的算法課本大致翻翻也就知道是什麽貨色了。
1. 算法導論
這本書的內容用三個字來總結。就是偉光正。
基本上囊括了經常使用算法的方方面面,證明巨細無遺,十分適合剛開始學習的人閱讀。
可是這本書的一大問題就是,證明盡管具體。卻從未解釋算法背後的理由。僅僅告訴你怎樣去做,卻從未探討過為何如此去做。
2.算法引論(Introduction to Algorithms, a Creative Approach)
算法導論告訴我們how。這本書就力圖告訴我們why。書中極為強調的數學歸納法是建立算法設計思維的重要一步。
另外,這本書的習題中有非常多常見的面試難題,包含skyline、眾數和名人問題。
3.Algorithms on Strings, Trees and Sequences
前兩本書對於一般的算法描寫敘述已經比較全面了。
可是在字符串相關算法方面。這本書不可不讀。讀完之後,對字符串算法的全貌就會有一個了解,包含後綴樹和AC自己主動機這些尋常不太easy接觸到的數據結構。
作者是做生物的,所以後面有一些關於生物的應用,直接忽略就好,沒神馬意思。
4.具體數學
這本書和前三本相比,就學院化了非常多。是非常數學的一本書,可是裏面介紹的非常多思想和樣例都非常好玩。
有大把時間就能夠讀讀娛樂。沒時間就算了。
二、雜書
5. Algorithmic Puzzles
相比前面那幾本大作,這本小書更像是一本腦筋急轉彎的collection。
可是別小看這本書。它在題目之前提到的解題模式。是有著廣泛應用的。
6. 算法設計與分析基礎
由於提到了上面那本書,這本書也就不得不提一下。算法設計與分析基礎,相同總結了相似的解題方法,所以這兩本書可能是個互相“借鑒”的關系。
這本書的問題是,想法盡管好,可是習題實在是太爛了。爛到你不須要掌握他的那些想法就能解出來。
所以隨便看看就好。
7. 挑戰程序設計競賽
一本新的程序設計競賽解說書籍。
這本書相對於黑書。難度可能略有下降(我曾經匆匆看過黑書),可是同一時候語言文字上好了兩個數量級。反正我們也不是專業搞ACM競賽的。難度上看這本書足夠。
三、面試算法
面試算法中有非常多非常tricky的東西,在書本中不會提到。在競賽中也非常少遇到(某人將其命名為folk algorithms, 鄉野算法)。這時候就須要專門用來準備面試的書籍登場了。
8. Cracking the Code Interview
這書的題目難度比較正常。可是覆蓋面夠廣。
假設放在兩年前,這本書基本覆蓋了全部popular的面試算法題目。
9. Elements of Programming Interviews
這本書是一本非常討厭的書。內容新且難。每一個帶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/
面試算法愛好者書籍/OJ推薦