商品簡介
《代碼隨想錄——跟著Carl學算法》首先講解程序員面試時需要了解的製作簡歷的技巧和IT名企的面試流程,以及面試時經常忽略的代碼規範性問題。然後詳細分析程序的時間複雜度和空間複雜度,包括如何把控程序的實際運行時間,以及編程語言的內存管理。接著講解數組、鏈表、哈希表、字符串、棧與隊列、二叉樹、回溯算法、貪心算法、動態規劃的理論基礎及其相關題目。
《代碼隨想錄——跟著Carl學算法》采用了力扣(LeetCode)的原題,方便讀者在學習算法的同時,及時練習相關代碼,加深對相關概念的理解。
作者簡介
孫秀洋(@程序員Carl)
哈爾濱工業大學計算機科學與技術專業碩士,先後在騰訊和百度從事技術研發,對數據結構與算法有深刻理解,擅長將一個個算法串聯在一起並用通俗易懂的方式講解出來。
名人/編輯推薦
歸納經典算法面試題,總結經典算法的各個知識點
分析多個算法應用場景,快速構建算法知識體系
【注】:
本書是用C++進行講解的,支持本書內容的 Java、Python、Go、JS、PHP、C、Swift等語言版本。可以查看本書內容和講解思路,配合網站一起學習。
序
而我也被這一魔力所吸引。
十年前我開始學習算法,並且開始寫與算法相關的博客。當時寫算法博客的人還不多,網上能搜索到的算法文章也有限。
很多人沒有寫博客的習慣,因為寫博客在一定程度上確實“耽誤時間”。
不過當時我只是想記錄下來,想著以後如果把這些知識都忘了,至少博客可以證明:曾經我掌握過。
沒想到,算法陪伴我一晃就是十年,從本科到研究生,從一家公司到另一家公司,再到算法圖書的出版……我的每一段人生經歷都在從不同的角度和算法打交道。
隨著多年學習和實踐,我在各種在線判題平臺上積累了上千題,對算法的理解已經有了一套獨特的體系。
同時我也發現,很多讀者在刷題和學習算法時,真正的苦惱在於沒有一套行之有效的刷題順序。
例如,動態規劃是公認的程序員面試裡最難掌握的算法,也是出現頻率最高的算法。如果僅僅講解幾道題目,即使再舉一反三也遠遠達不到真正理解的程度。如果把動態規劃的題目單純地堆砌在一起,也只會讓人越學越懵,陷入“一看就會,一寫就廢”的怪圈。講清楚一兩道題容易,但把整個動態規劃的各個分支講清楚,把每道題目講透徹,並用一套方法論來指導就有難度了。這既是我無數日夜伏案思考、反復推理,要幫助讀者解決的問題,也是本書的使命所在。
對於二叉樹、回溯算法、動態規劃等重點數據結構與算法,本書都總結了一套行之有效的方法論,系統性地解決這些算法的相關問題,並把相關題目按照由易到難的順序編排,讓讀者循序漸進地征服算法的一座又一座高山。
本書特色
剛開始學習數據結構與算法,或者在力扣(LeetCode)上刷題的讀者都有這種困惑——從何學起,先學什麼,再學什麼。很多人刷題的效率低,主要體現在以下三點:
— 難以尋找適合自己的題目。
— 找到了不合適現階段做的題目,結果發現毫無頭緒。
— 沒有全套的優質題解可以參考。
我相信很多讀者對此深有體會,所以我將每一個專題中的題目按照由易到難的順序進行編排,每一道題目所涉及的知識都會有相應的題目做知識鋪墊,做到環環相扣。
建議讀者按章節順序閱讀本書,在閱讀的過程中會發現題目編排上的良苦用心。
本書不僅在題目編排上精心設計,而且在針對讀者最頭痛的算法問題上做了詳細且深入的講解。
關於動態規劃,都知道遞推公式的重要性,但dp數組的含義、dp數組的初始化、遍歷順序,以及如何打印dp數組來排查Bug,這些都很重要。例如,解決背包問題時,遍歷順序才是最關鍵的,也是最難理解的。
關於回溯算法,題目要求集合之間不可重復,那麼就需要去重。雖然各種資料都說要去重,但沒有說清楚是“樹層去重”還是“樹枝去重”——這是我為了說明去重的過程而創造的兩個詞匯。
關於KMP算法,都知道使用前綴表進行回退,可什麼是前綴表,為什麼一定要使用前綴表,根據前綴表進行回退有幾種方式,這些卻沒有說清楚,導致大家看得一頭霧水。
關於二叉樹,不同的遍歷順序的遞歸函數究竟如何安排,遞歸函數什麼時候需要返回值,什麼時候不用返回值,什麼情況下分別使用前、中、後序遍歷,如何實現迭代法,這些都決定了對二叉樹的理解是否到位。
本書我同時針對每一個專題的特點,整理出其通用的解法套路。例如,在二叉樹專題中,總結了遞歸“三部曲”來幫助讀者掌握二叉樹中各種遍歷方式的寫法。回溯算法中的回溯“三部曲”可以幫助讀者理解回溯算法晦澀難懂的過程。動態規劃中的動規“五部曲”可以幫助讀者在一套思考框架下解決動態規劃題目。
相信讀者耐心看完本書,會對書中介紹的算法有更深層次的理解。
本書配套資源
本書統一使用C++語言進行講解,對於使用其他語言的讀者,支持Java、Python、Go、JavaScript等多語言版本,同時一些題目還有動畫演示,幫助讀者更好地掌握本書內容。
致謝
這裡要感謝錄友們,是你們的支持,讓“代碼隨想錄”從無到有,到最後出版成書與讀者見面。雖然從未謀面,但通過文字,我們已經交流了整整一年有余。真心地感謝每一位錄友。
感謝電子工業出版社的工作人員,特別是陳曉猛編輯。陳編輯工作認真負責,是非常可靠的合作伙伴。
最後我要感謝我的父母——孫世忠先生和馬麗麗女士。父母在我求學的路上給予了我最大的支持,付出了非常多。我無以為謝,謹以此書獻給他們。
孫秀洋(@程序員Carl)
2021年10月11日於深圳南山
主題書展
更多主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。