前言
面試時,如果沒有拿得出手的實戰專案證明自己能力,面試官只能透過演算法題來評估你。
力扣的演算法題因被BAT、京東、美團、位元組跳動、滴滴、拼多多、微軟、亞馬遜、Google、Facebook等一線科技公司選作面試題而名聲大噪。
不過很少有人能刷完力扣的上千道題,這本“演算法筆記”就把這些海量演算法題分門別類彙總,提煉出各類題的套路和解題框架,幫助你快速掌握演算法思維,以不變應萬變來應對網際網路公司的各種演算法題!
並且這本演算法筆記在GitHub上面標星76.8K了!
作者簡介作者是ios開發工程師,校招進入阿里巴巴後,轉做Go語言服務端開發。(這本演算法筆記主推Java語言使用者學習閱讀)
他在校期間連續三年參加ACM-ICPC競賽。從參賽開始,原計劃每天刷一道演算法題,實際上每天有時候不止一題,一年最終完成了 600+:
憑藉三年刷題經驗,他在校招中很快拿到了各大公司的offer,最終他選擇了阿里巴巴。入職前,他把他的刷題經驗總結成書,作為禮物贈送給他的學弟學妹,希望同學們都能在最短時間內掌握校招常見的演算法及解題思路。
演算法筆記的魅力當你熟讀一遍之後就會發現這些都是白給的套路,誰能不愛!
再加上書中用喜聞樂見的語言來講述演算法,還配上了幾百幅有趣的演算法圖示及部分動畫演示。
不禁感慨,這本書確實配得上這個排名!
傳授最高效的學習方式你是否有過這種感覺:資料結構和演算法我以前學得挺好的,為啥這些演算法題我完全沒思路呢?
面對這種疑惑,有人可能會擺出好幾本與演算法相關的大部頭,建議你去進修。可如果學習演算法是為了應對考試和麵試(相信大部分人是這樣),這時去啃一些大部頭專著顯然就得不償失了。
而更高效的方法是直接刷題!
但是,刷題也是有技巧的,刷題平臺上動輒幾千道題,難道你要全刷完嗎?正確刷題方式是——
邊刷邊歸納總結,抽象出每種題型的套路框架。
比如,刷一道演算法題,解題思路有什麼可複用的地方,是否可以和之前做的某一道題聯絡起來?
再比如,都說動態規劃問題難,千變萬化,但這類問題本身是不是有一些特性,是不是能夠抽象出一套抽象的指導方法來做動態規劃問題?
在此書中,已經為你全部總結好了這些核心框架,並且直接集中放到了開篇第一章,後續章節精選了八十道力扣演算法題,手把手教你如何運用演算法框架去解決實際演算法問題。
本書專攻演算法刷題,訓練演算法思維,應對演算法筆試。且作者,江湖人稱Offer收割機,有著多年的刷題經驗,有著他的經驗加持,相信把這本書刷完,你也可以培養出框架思維!
不侷限於具體程式語言本書有一點和其他的書不太一樣,書中並沒有統一程式語言,而是混用了三種最常用的程式語言:Python、C++ 和 Java。
比如,一道題我們用 Python 來寫解法,下一道題可能用 Java 來寫解法。又或者說,對於同一道題,我們用 Python 形式的虛擬碼描述某個演算法的框架套路,最後用 C++ 寫解法實現這個演算法。
為什麼要這樣做呢?刷演算法題是在養成一種思維模式,不應該侷限於具體的程式語言。每一種語言都有缺點,我們到底選擇用哪一種語言來解某道題目的根本依據是,解法的思路是否可以避開隱晦的語言特性,做到清晰易懂。
不用擔心有的語言你不熟悉,演算法根本用不到程式語言層面的技巧,本書會秉持最小化語言特性的原則,只會介紹本書中用到的資料結構和對應的 API,只要你學過任何一門程式語言,很容易就能明白。(書中也會統一介紹三種語言的基本操作)
對於有時間的同學,作者還給出了他結合眾多資料結構演算法書籍,挑選出的一千多道題的解題思路和方法,以供有需要的同學慢慢研究。
這本筆記總共1120頁,涵蓋了常見筆試面試演算法和所有型別演算法題的題解思路。整本書排版非常精美,每個題目先給出解題思路,然後再給出原始碼,必要時會用插圖展示解題邏輯。
所有的題目作者還給出了原始碼,讀者可以直接執行。
寫在最後在國內外各大IT公司的面試流程中,考察候選人演算法能力是極其重要的一環。刷演算法題既可以提高我們的面試優勢,也充分鍛鍊了我們的邏輯思維能力。這本演算法小抄,用生動的語言為我們講解了許多經典的演算法題目,對想要提升演算法能力的小夥伴很有幫助。