TOP
0
0
【23號簡體館日】限時三天領券享優惠!!
劍指Offer(專項突破版):數據結構與算法名企面試題精講(簡體書)
滿額折

劍指Offer(專項突破版):數據結構與算法名企面試題精講(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:13 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

本書全面、系統地總結了在準備程序員面試過程中必備的數據結構與算法。本書首先詳細討論整數、數組、鏈表、字符串、哈希表、棧、隊列、二叉樹、堆和前綴樹等常用的數據結構,然後深入討論二分查找、排序、回溯法、動態規劃和圖搜索等算法。除了介紹相應的基礎知識,每章還通過大量的高頻面試題系統地總結了各種數據結構與算法的應用場景及解題技巧。

本書適合所有正在準備面試的程序員閱讀。無論是計算機相關專業的應屆畢業生還是初入職場的程序員,本書總結的數據結構和算法的基礎知識及解題經驗都不僅可以幫助他們提高準備面試的效率,還可以增加他們通過面試的成功率。

作者簡介

何海濤,有近20年在IT跨國巨頭公司編程經驗,參與開發過Office、Visual Studio、Azure等產品;以面試者身份進入Autodesk、思科、微軟中國(上海)、微軟總部(美國)等知名企業後,擔任面試官面試千餘次,積累大量真實試題和現場經驗。著有編程面試類圖書《劍指Offer——名企面試官精講典型編程題》(系列)、《Coding Interviews: Questions, Analysis and Solutions》(《劍指Offer》英文版,也是唯一全球多語種發行的編程圖書),通過自己的著作與在線答疑,幫助數百萬讀者拿到心儀的Offer;現全家定居美國。

名人/編輯推薦

本書緊跟趨勢、視角獨特、切中要害、直指瓶頸,來自作者潛心篩選2020-2021中國與北美代表性名企的精華真題,且與經典版《劍指Offer(第2版)》考點題型互補,搭配使用效果更佳。

√ 本書代碼用語言已從經典版的C/C++過渡到Java

√ 以面試者|面試官雙向視角剖析考點與解題思路

√ 精選 119 道國內外名企高頻面試題並深度拓展

√ 針對面試難關,打通算法與數據結構突擊捷徑

√ 讀者可在力扣本書專區實時在線練習全部試題


前 言


2021年1月22日,我從工作超過10年的微軟離職,並於23日入職Rubrik,一家相對而言規模要小很多的公司,開始一段新的職業旅程。

與所有程序員一樣,換公司工作我也需要經歷一輪又一輪的面試,而算法面試是面試中的重頭戲。這次換工作的準備與面試階段正好與本書的撰寫階段重合。在此之前,我作為面試官在微軟已經面試了很多應聘者。在撰書的過程中,我結合自己多年來被他人面試及面試他人的經驗,一直在思考如何高效地學習數據結構和算法,如何在面試短短的幾十分鐘內快速找到解題思路並寫出高質量的代碼。

以這十幾年對程序員面試這個領域的觀察,我的結論是面試的難度在逐年增加,準備面試需要花費的時間和精力也越來越多。幾年前如果聽說誰為了準備面試刷了200道算法題,大家都會覺得非常驚訝。現在每個應聘者都在刷題,應屆畢業生準備面試刷400道算法題基本上只能算是起步。由於應聘者刷題越來越熟練,程序員面試的標準自然也隨之水漲船高。

我個人不喜歡也不建議采用題海戰術。我們真正需要的是系統學習並深刻理解不同數據結構和算法的特征及適用場景。在真正掌握了每個數據結構及算法的精髓之後,如果針對典型的面試題進行必要的練習,那麼在面試時就能以不變應萬變,不管遇到什麼樣的面試題都能迎刃而解。幫助讀者系統學習並深刻理解不同數據結構和算法的特征及適用場景,是我撰寫本書的初衷;幫助讀者在算法面試中能快速找到解題思路並寫出高質量的代碼,是我撰寫本書的目的。

學習數據結構,需要先熟練掌握插入、刪除和查找等基本操作,這些基本操作往往是解決很多面試題的關鍵。例如,如果我們熟練掌握了前綴樹的插入和查找操作,那麼很多與字符串前綴相關的問題都很容易解決。

同樣,對於基礎算法我們也需要深刻理解它們的原理及其實現代碼。例如,二分查找通常只需要10行左右的代碼就能實現,我們要理解它的循環條件的比較運算符什麼時候是“<”,以及什麼時候是“<=”,確定下一步查找前半部分或後半部分的標準是什麼。理解了這些原理之後,不管面試題如何變化,最終解決問題的代碼都大同小異。

學習數據結構,還要深刻理解每種數據結構的特點及其適用場景,這樣才能在面試過程中合理選擇數據結構解決問題。例如,哈希表是時間效率非常高的數據結構,它的插入、刪除和查找操作的時間復雜度都是O(1)。雖然哈希表的時間效率非常高,但並不是所有的問題都能用哈希表來解決。如果存儲的元素是字符串,並且需要根據字符串的前綴進行查找,那麼前綴樹是更好的選擇。如果存儲的元素是數字,並且解決問題需要知道數據集合中的最大值或最小值,那麼堆可能是更好的選擇。如果需要對動態數據集合排序,並且需要根據數值的大小進行查找,那麼平衡的二叉搜索樹(Java中的TreeSet或TreeMap)可能是更好的選擇。

同樣,學習算法也要理解每種算法的特點及其適用場景。例如,回溯法和動態規劃適合解決的問題看起來很類似。如果解決一個問題需要多個步驟,並且每個步驟都面臨多個原則,那麼我們可以考慮使用回溯法或動態規劃來解決這個問題。如果要求列舉出問題所有的解,那麼我們應該采用回溯法來解決問題。如果只是要求計算某個最優解(通常是最大值或最小值)或計算解的數目,那麼我們應該采用動態規劃來解決問題。

本書的關注點是算法面試,因此,和常規的算法類書籍相比,本書更加注重準備面試的實用性。本書注重總結常用的解題思路。例如,如果面試題提到與二叉樹層相關的概念,那麼我們可以嘗試用廣度優先搜索算法來解決這個問題。本書“解題小經驗”條目總結了常用的解題思路,建議讀者留意。

本書還著重總結了一些常用的代碼模板,希望讀者能夠理解這些代碼模板的來龍去脈,這樣在面試中如果遇到類似的問題就能套用相應的模板解決,輕松做到舉一反三。例如,用並查集解決問題時合並和查找操作的代碼大同小異,在合適的時候套用函數union和findFather就能解決很多與圖相關的問題。

在撰寫本書的過程中我得到了很多朋友的幫助。類似於程序員在遞交代碼之前需要通過代碼審查,在將書稿交付給出版社編輯修改、排版之前,我邀請了很多朋友幫忙審閱,其中包括微軟的陳黎明、賈志勇、王洪臣(Walter Wang)、高天翔(Frank Gao)、袁源、李興華,谷歌的田超,臉書的董朝、何濤,蘋果的吳斌,阿裡巴巴的韓偉東、殷焰,字節跳動的尹彥,以及諾基亞貝爾的吳永康等。他們仔細審閱了書稿並提出大量建議,大幅度提高了本書的質量。在此謹向他們表示由衷的感謝。

當然,我的時間和能力有限,書中難免存在一些疏漏之處。如果讀者發現書中的問題,請通過電子郵件和我聯系。

感謝電子工業出版社的工作人員,尤其是張春雨的幫助。他們大到全書的構架,小到文字的推敲,都給予了我極大的幫助,從而使本書的質量得到了極大的提升。

本書還得到了很多朋友的支持和幫助,由於篇幅有限,在此不一一列舉,但我一樣對他們心存感激。

最後,我要衷心地感謝我的愛人劉素云。感謝她多年來對我的理解和支持,為我營造了一個溫馨而又浪漫的家,讓我能夠靜下心來讀書和寫作。我也同樣感謝我們兩個可愛的兒子,他們臉上純真、燦爛的笑容是我每天工作的動力。我無以為謝,謹以此書獻給他們。



何海濤

2021年1月24日於西雅圖


目次

第1章 整數 1

1.1 整數的基礎知識 1

1.2 二進制 4

1.3 本章小結 13

第2章 數組 14

2.1 數組的基礎知識 14

2.2 雙指針 15

2.3 累加數組數字求子數組之和 22

2.4 本章小結 28

第3章 字符串 30

3.1 字符串的基礎知識 30

3.2 雙指針 31

3.3 回文字符串 41

3.4 本章小結 45

第4章 鏈表 46

4.1 鏈表的基礎知識 46

4.2 哨兵節點 47

4.3 雙指針 50

4.4 反轉鏈表 58

4.5 雙向鏈表和循環鏈表 66

4.6 本章小結 71

第5章 哈希表 73

5.1 哈希表的基礎知識 73

5.2 哈希表的設計 74

5.3 哈希表的應用 82

5.4 本章小結 91

第6章 棧 92

6.1 棧的基礎知識 92

6.2 棧的應用 93

6.3 本章小結 108

第7章 隊列 109

7.1 隊列的基礎知識 109

7.2 隊列的應用 110

7.3 二叉樹的廣度優先搜索 114

7.4 本章小結 125

第8章 樹 126

8.1 樹的基礎知識 126

8.2 二叉樹的深度優先搜索 127

8.3 二叉搜索樹 141

8.4 TreeSet和TreeMap的應用 153

8.5 本章小結 160

第9章 堆 161

9.1 堆的基礎知識 161

9.2 堆的應用 165

9.3 本章小結 172

第10章 前綴樹 174

10.1 前綴樹的基礎知識 174

10.2 前綴樹的應用 179

10.3 本章小結 191

第11章 二分查找 192

11.1 二分查找的基礎知識 192

11.2 在排序數組中二分查找 193

11.3 在數值範圍內二分查找 201

11.4 本章小結 205

第12章 排序 206

12.1 排序的基礎知識 206

12.2 計數排序 208

12.3 快速排序 211

12.4 歸並排序 215

12.5 本章小結 222

第13章 回溯法 224

13.1 回溯法的基礎知識 224

13.2 集合的組合、排列 226

13.3 回溯法解決其他類型問題 235

13.4 本章小結 239

第14章 動態規劃 241

14.1 動態規劃的基礎知識 241

14.2 單序列問題 248

14.3 雙序列問題 266

14.4 矩陣路徑問題 281

14.5 背包問題 293

14.6 本章小結 303

第15章 圖 305

15.1 圖的基礎知識 305

15.2 圖的搜索 307

15.3 拓撲排序 333

15.4 並查集 342

15.5 本章小結 354


您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區