JavaGuide
這篇文章我會推薦一些關于算法學習的書籍以及資源。希望對大家學習算法有幫助!
先占個坑,說一下我覺得算法這部分學習比較好的規劃:
- 未入門(對算法和基本資料結構不了解)之前建議先找一本入門書籍看;
- 如果時間比較多可以看一下我推薦的經典部分的書籍,《算法》這本書是首要要看的,其他推薦的神書看自己時間和心情就好,不要太糾結。
- 如果要準備面試,時間比較緊的話,就不需要再去看《算法》這本書了,時間來不及,當然你也可以選取其特定的章節檢視。我也推薦了幾本不錯的專門為算法面試準備的書籍比如《劍指 offer》和《程式員代碼面試指南》。除了這兩本書籍的話,我在下面推薦了 Leetcode 和牛客網這兩個常用的刷題網站以及一些比較好的題目資源。
書籍推薦
先來看三本入門書籍,這三本入門書籍中的任何一本拿來作為入門學習都非常好。我個人比較傾向于 《我的第一本算法書》 這本書籍,雖然它相比于其他兩本書集它的豆瓣評分略低一點。我覺得它的配圖以及講解是這三本書中最優秀,唯一比較明顯的問題就是沒有代碼示例。但是,我覺得這不影響它是一本好的算法書籍。因為本身下面這三本入門書籍的目的就不是通過代碼來讓你的算法有多厲害,隻是作為一本很好的入門書籍讓你進入算法學習的大門。
入門
我的第一本算法書[1] (豆瓣評分 7.1,0.2K+人評價)
一本不那麼“專業”的算法書籍。和下面兩本推薦的算法書籍都是比較通俗易懂,“不那麼深入”的算法書籍。我個人非常推薦,配圖和講解都非常不錯!
《算法圖解》[2](豆瓣評分 8.4,1.5K+人評價)
入門類型的書籍,讀起來比較淺顯易懂,非常适合沒有算法基礎或者說算法沒學好的小夥伴用來入門。示例豐富,圖文并茂,以讓人容易了解的方式闡釋了算法.讀起來比較快,内容不枯燥!
啊哈!算法
啊哈!算法[3] (豆瓣評分 7.7,0.5K+人評價)
和《算法圖解》類似的算法趣味入門書籍。
經典
《算法 第四版》[4](豆瓣評分 9.3,0.4K+人評價)
我在大二的時候被我們的一個老師強烈安利過!自己也在當時購買了一本放在宿舍,到離開大學的時候自己大概看了一半多一點。因為内容實在太多了!另外,這本書還提供了詳細的 Java 代碼,非常适合學習 Java 的朋友來看,可以說是 Java 程式員的必備書籍之一了。
再來介紹一下這本書籍吧!這本書籍算的上是算法領域經典的參考書,全面介紹了關于算法和資料結構的必備知識,并特别針對排序、搜尋、圖處理和字元串處理進行了論述。
下面這些書籍都是經典中的經典,但是閱讀起來難度也比較大,不做太多闡述,神書就完事了!推薦先看 《算法》,然後再選下面的書籍進行進一步閱讀。不需要都看,找一本好好看或者找某本書的某一個章節知識點好好看。
程式設計珠玑[5](豆瓣評分 9.1,2K+人評價)
經典名著,被無數讀者強烈推薦的書籍,幾乎是頂級程式員必看的書籍之一了。這本書的作者也非常厲害,Java 之父 James Gosling 就是他的學生。
很多人都說這本書不是教你具體的算法,而是教你一種程式設計的思考方式。這種思考方式不僅僅在程式設計領域适用,在其他同樣适用。
《算法設計手冊》[6](豆瓣評分 9.1 , 45 人評價)
被 Teach Yourself Computer Science[7] 強烈推薦的一本算法書籍。
《算法導論》[8] (豆瓣評分 9.2,0.4K+人評價)
《計算機程式設計藝術(第 1 卷)》[9](豆瓣評分 9.4,0.4K+人評價)
面試
《劍指 Offer》[10](豆瓣評分 8.3,0.7K+人評價)
這本面試寶典上面涵蓋了很多經典的算法面試題,如果你要準備大廠面試的話一定不要錯過這本書。
《劍指 Offer》 對應的算法程式設計題部分的開源項目解析:CodingInterviews[11]
程式員代碼面試指南:IT 名企算法與資料結構題目最優解(第 2 版)[12] (豆瓣評分 8.7,0.2K+人評價)
題目相比于《劍指 offer》 來說要難很多,題目涵蓋面相比于《劍指 offer》也更加全面。全書一共有将近 300 道真實出現過的經典代碼面試題。
程式設計之美[13](豆瓣評分 8.4,3K+人評價)
這本書收集了約 60 道算法和程式設計題目,這些題目大部分在近年的筆試、面試中出現過,或者是被微軟員工熱烈讨論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。
網站推薦
我比較推薦大家可以刷一下 Leetcode ,我自己平時沒事也會刷一下,我覺得刷 Leetcode 不僅是為了能讓你更從容地面對面試中的手撕算法問題,更可以提高你的程式設計思維能力、解決問題的能力以及你對某門程式設計語言 API 的熟練度。當然牛客網也有一些算法題,我下面也整理了一些。
LeetCode[14]
如何高效地使用 LeetCode[15]
- 《程式員代碼面試指南》[16]
- 《劍指 offer》[17]
牛客網[18]
線上程式設計[19]:
- 《劍指 offer》[20]
- 《程式員代碼面試指南》[21]
- 2019 校招真題[22]
- 大一大二程式設計入門訓練[23]
- .......
大廠程式設計面試真題[24]
參考資料
[1]
我的第一本算法書: https://book.douban.com/subject/30357170/
[2]
《算法圖解》: https://book.douban.com/subject/26979890/
[3]
啊哈!算法: https://book.douban.com/subject/25894685/
[4]
《算法 第四版》: https://book.douban.com/subject/10432347/
[5]
程式設計珠玑: https://book.douban.com/subject/3227098/
[6]
《算法設計手冊》: https://book.douban.com/subject/4048566/
[7]
Teach Yourself Computer Science: https://teachyourselfcs.com/
[8]
《算法導論》: https://book.douban.com/subject/20432061/
[9]
《計算機程式設計藝術(第1卷)》: https://book.douban.com/subject/1130500/
[10]
《劍指Offer》: https://book.douban.com/subject/6966465/
[11]
CodingInterviews: https://github.com/gatieme/CodingInterviews
[12]
程式員代碼面試指南:IT名企算法與資料結構題目最優解(第2版): https://book.douban.com/subject/30422021/
[13]
程式設計之美: https://book.douban.com/subject/3004255/
[14]
LeetCode: https://leetcode-cn.com/
[15]
如何高效地使用 LeetCode: https://leetcode-cn.com/articles/%E5%A6%82%E4%BD%95%E9%AB%98%E6%95%88%E5%9C%B0%E4%BD%BF%E7%94%A8-leetcode/
[16]
《程式員代碼面試指南》: https://leetcode-cn.com/problemset/lcci/
[17]
《劍指offer》: https://leetcode-cn.com/problemset/lcof/
[18]
牛客網: https://www.nowcoder.com
[19]
線上程式設計: https://www.nowcoder.com/activity/oj
[20]
《劍指offer》: https://www.nowcoder.com/ta/coding-interviews
[21]
《程式員代碼面試指南》: https://www.nowcoder.com/ta/programmer-code-interview-guide
[22]
2019 校招真題: https://www.nowcoder.com/ta/2019test
[23]
大一大二程式設計入門訓練: https://www.nowcoder.com/ta/beginner-programmers
[24]
大廠程式設計面試真題: https://www.nowcoder.com/contestRoom?filter=0&orderByHotValue=3&target=content&categories=-1&mutiTagIds=2491&page=1
END