TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Python程序員面試寶典(簡體書)
滿額折

Python程序員面試寶典(簡體書)

人民幣定價:89.8 元
定  價:NT$ 539 元
優惠價:87469
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:14 點
相關商品
商品簡介
作者簡介
目次

商品簡介

本書致力於理論與實踐的緊密結合。全書分十二章,從十二個方面來拆解算法面試會遇到的各種難題。前兩章從技術面試的方法論和心態建設入手,讓讀者能高層建瓴,在心態上做到遊刃有餘,收放自如。接下來的三到十二章,從多個角度去詳解給各類面試算法題,為大家建立一個方案數據庫。這九章分別從基礎數據類型,數組與字符串,鏈表,堆棧,二叉樹,堆(heap),二分查找法,圖論,貪婪算法,動態規劃等若干個方面去覆蓋算法面試中最常見的技術問題,通過這幾章的學習,我相信讀者能夠在面試過程中做到胸有成竹,遇事不慌,因為對方的招數與套路盡在你的掌握。

作者簡介

陳屹,畢業于北京化工大學信息與計算科學專業。05年畢業後投身於計算機軟件開發行業至今。多年來曾經在聯想,微軟,RealNetworks擔任軟件工程師,積累了大量的實踐經驗。本人在數學,算法,計算機操作系統,網絡協議,編譯原理,前端開發,人工智能等領域擁有一定的知識沉澱和經驗積累,目前正致力於人工智能,特別是神經網絡和深度學習領域的研究和開發。

目次

第1章 技術面試的方法論 1

1.1 一道亞馬遜面試題的情景分析 1

1.1.1 暴力枚舉法 2

1.1.2 分而治之法 4

1.1.3 最優解法 6

1.1.4 解題流程總結 7

1.2 面試的流程,心態建設,相關準備 8

1.2.1 面試前流程 8

1.2.2 簡歷的製作 10

1.2.3 有效的面試策略 11

1.2.4 編碼實現 12

1.2.5 面試過程中的交流要點 13

1.3 知己知彼,百戰不殆――從面試官角度看面試 14

1.3.1 如何進行一場良好的面試 15

1.3.2 面試官如何主導面試流程 17

1.3.3 面試官如何評估候選人 17

第2章 算法面試的技術路線圖 19

2.1 算法面試中的數據結構 19

2.1.1 基礎數據類型 20

2.1.2 數組與字符串 21

2.1.3 鏈表 21

2.1.4 堆棧 22

2.1.5 二叉樹 22

2.1.6 堆 23

2.1.7 哈希表 23

2.2 算法的設計模式 24

2.2.1 排序 24

2.2.2 遞歸 26

2.2.3 分而治之 27

2.2.4 動態規劃 29

2.2.5 貪婪算法 29

2.2.6 逐步改進 29

2.2.7 排除法 30

2.3 抽象分析模式 30

2.3.1 樣例覆蓋 31

2.3.2 小量數據推導 31

2.3.3 簡單方案的逐步改進 32

2.3.4 問題還原 33

2.3.5 圖論模擬 34

第3章 基礎數據類型的算法分析 35

3.1 基礎數據類型中二進制位的操作算法 35

3.1.1 整型變量值互換 35

3.1.2 常用的二進制位操作 36

3.1.3 解析一道二進制操作相關算法面試題 37

3.1.4 總結 40

3.2 用二進制操作求解集合所有子集 40

3.2.1 題目描述 40

3.2.2 算法描述 40

3.2.3 代碼實現 41

3.2.4 算法分析 43

3.3 使用二進制求解最大公約數 43

3.3.1 題目描述 43

3.3.2 算法描述 45

3.3.3 代碼實現 47

3.3.4 算法分析 49

3.4 素數判定 50

3.4.1 題目描述 50

3.4.2 算法描述 50

3.4.3 代碼實現 52

3.4.4 算法分析 53

3.5 判斷矩形交集 54

3.5.1 題目描述 54

3.5.2 算法描述 54

3.5.3 代碼實現 56

3.6 數字與字符串相互轉化,簡單題目的隱藏陷阱 58

3.6.1 題目描述 58

3.6.2 算法描述 58

3.6.3 代碼實現 59

3.6.4 算法分析 60

3.7 Elias Gamma編碼算法 62

3.7.1 題目描述 62

3.7.2 算法描述 63

3.7.3 代碼實現 63

3.7.4 算法分析 66

3.8 整型的二進制乘法 67

3.8.1 題目描述 67

3.8.2 算法描述 67

3.8.3 代碼實現 69

3.8.4 算法分析 73

第4章 數組和字符串 74

4.1 數組的定位排序 74

4.1.1 題目描述 74

4.1.2 算法描述 75

4.1.3 代碼實現 76

4.1.4 算法分析 78

4.2 在整型數組中構建元素之和能整除數組長度的子集 78

4.2.1 題目描述 78

4.2.2 算法描述 78

4.2.3 代碼實現 79

4.2.4 算法分析 82

4.3 計算等價類 82

4.3.1 題目描述 82

4.3.2 算法描述 83

4.3.3 代碼實現 85

4.3.4 代碼分析 86

4.4 大型整數相乘 87

4.4.1 題目描述 87

4.4.2 算法描述 87

4.4.3 代碼實現 88

4.4.4 代碼分析 91

4.5 數組的序列變換 92

4.5.1 題目描述 92

4.5.2 算法描述 92

4.5.3 代碼實現 94

4.5.4 代碼分析 96

4.6 字符串的旋轉 96

4.6.1 題目描述 96

4.6.2 算法描述 96

4.6.3 代碼實現 97

4.6.4 代碼分析 99

4.7 二維數組的啟發式搜索算法 99

4.7.1 題目描述 99

4.7.2 算法描述 99

4.7.3 代碼實現 100

4.7.4 代碼分析 101

4.8 二維數組的旋轉遍歷 102

4.8.1 題目描述 102

4.8.2 算法描述 102

4.8.3 代碼實現 104

4.8.4 代碼分析 105

4.9 矩陣的90°旋轉 105

4.9.1 題目描述 106

4.9.2 算法描述 106

4.9.3 代碼實現 107

4.9.4 代碼分析 109

4.10 游程編碼 109

4.10.1 題目描述 110

4.10.2 算法描述 110

4.10.3 代碼實現 110

4.10.4 代碼分析 112

4.11 字符串中單詞的逆轉 113

4.11.1 題目描述 113

4.11.2 算法描述 113

4.11.3 代碼實現 114

4.11.4 代碼分析 115

4.12 Rabin-Karp字符串匹配算法 115

4.12.1 題目描述 115

4.12.2 算法描述 115

4.12.3 代碼實現 118

4.12.4 代碼分析 120

4.13 用有限狀態自動機匹配字符串 120

4.13.1 題目描述 120

4.13.2 算法描述 121

4.13.3 代碼實現 124

4.13.4 代碼分析 127

4.14 KMP算法――字符串匹配算法的創意巔峰 127

4.14.1 題目描述 127

4.14.2 算法描述 127

4.14.3 代碼實現 129

4.14.4 代碼分析 131

4.15 正則表達式引擎的設計和實施 132

4.15.1 題目描述 132

4.15.2 算法描述 133

4.15.3 代碼實現 138

4.15.4 代碼分析 178

第5章 隊列和鏈表 179

5.1 遞歸式實現鏈表快速倒轉 179

5.1.1 題目描述 179

5.1.2 算法描述 180

5.1.3 代碼實現 181

5.1.4 代碼分析 184

5.2 鏈表成環檢測 184

5.2.1 題目描述 185

5.2.2 算法描述 185

5.2.3 代碼實現 186

5.2.4 代碼分析 189

5.3 在O(1)時間內刪除單鏈表非末尾節點 190

5.3.1 題目描述 190

5.3.2 算法描述 190

5.3.3 代碼實現 191

5.3.4 代碼分析 192

5.4 獲取重合列表的第一個相交節點 192

5.4.1 題目描述 193

5.4.2 算法描述 193

5.4.3 代碼實現 194

5.4.4 代碼分析 196

5.5 單向鏈表的奇偶排序 196

5.5.1 題目描述 196

5.5.2 算法描述 196

5.5.3 代碼實現 198

5.5.4 代碼分析 199

5.6 雙指針單向鏈表的自我複製 199

5.6.1 題目描述 200

5.6.2 算法描述 200

5.6.3 代碼實現 202

5.6.4 代碼分析 206

5.7 利用鏈表層級打印二叉樹 206

5.7.1 題目描述 206

5.7.2 算法描述 206

5.7.3 代碼實現 207

5.7.4 代碼分析 209

第6章 堆棧和隊列 210

6.1 利用堆棧計算逆向波蘭表達式 210

6.1.1 題目描述 210

6.1.2 算法描述 210

6.1.3 代碼實現 211

6.1.4 代碼分析 213

6.2 計算堆棧當前元素最大值 213

6.2.1 題目描述 213

6.2.2 算法描述 213

6.2.3 代碼實現 214

6.2.4 代碼分析 216

6.3 使用堆棧判斷括號匹配 216

6.3.1 題目描述 216

6.3.2 算法描述 216

6.3.3 代碼實現 217

6.3.4 代碼分析 218

6.4 使用堆棧解決漢諾塔問題 218

6.4.1 題目描述 218

6.4.2 算法描述 219

6.4.3 代碼實現 219

6.4.4 代碼分析 222

6.5 堆棧元素的在線排序 222

6.5.1 題目描述 223

6.5.2 算法描述 223

6.5.3 代碼實現 224

6.5.4 代碼分析 225

6.6 計算滑動窗口內的最大網絡流量 225

6.6.1 題目描述 226

6.6.2 算法描述 226

6.6.3 代碼實現 231

6.6.4 代碼分析 234

6.7 使用堆棧模擬隊列 234

6.7.1 題目描述 235

6.7.2 算法描述 235

6.7.3 代碼實現 235

6.7.4 代碼分析 236

第7章 二叉樹 238

7.1 二叉樹的平衡性檢測 238

7.1.1 題目描述 239

7.1.2 算法描述 239

7.1.3 代碼實現 239

7.1.4 代碼分析 242

7.2 鏡像二叉樹的檢測 242

7.2.1 題目描述 243

7.2.2 算法描述 243

7.2.3 代碼實現 244

7.2.4 代碼分析 246

7.3 二叉樹的Morris遍歷法 247

7.3.1 題目描述 247

7.3.2 算法描述 247

7.3.3 代碼實現 250

7.3.4 代碼分析 251

7.4 使用前序遍歷和中序遍歷重構二叉樹 252

7.4.1 題目描述 252

7.4.2 算法描述 253

7.4.3 代碼實現 254

7.4.4 代碼分析 256

7.5 逆時針打印二叉樹外圍邊緣 256

7.5.1 題目描述 256

7.5.2 算法描述 257

7.5.3 代碼實現 257

7.5.4 代碼分析 259

7.6 尋找兩個二叉樹節點的最近共同祖先 259

7.6.1 題目描述 260

7.6.2 算法描述 260

7.6.3 代碼實現 260

7.6.4 代碼分析 264

7.7 設計搜索輸入框的輸入提示功能 264

7.7.1 題目描述 264

7.7.2 算法描述 264

7.7.3 代碼實現 265

7.7.4 代碼分析 269

第8章 堆 270

8.1 使用堆排序實現系統Timer機制 270

8.1.1 題目描述 270

8.1.2 算法描述 270

8.1.3 代碼實現 273

8.1.4 代碼分析 279

8.2 波浪形數組的快速排序法 279

8.2.1 題目描述 279

8.2.2 算法描述 280

8.2.3 代碼實現 281

8.2.4 代碼分析 287

8.3 快速獲取數組中點的相鄰區域點 287

8.3.1 題目描述 287

8.3.2 算法描述 287

8.3.3 代碼實現 289

8.3.4 代碼分析 292

第9章 二分查找法 293

9.1 隱藏在《編程珠璣》中20年的bug 293

9.1.1 題目描述 294

9.1.2 算法描述 294

9.1.3 代碼實現 295

9.1.4 代碼分析 297

9.2 在lg(k)時間內查找兩個排序數組合併後第k小元素 297

9.2.1 題目描述 297

9.2.2 算法描述 297

9.2.3 代碼實現 299

9.2.4 代碼分析 301

9.3 二分查找法尋求數組截斷點 302

9.3.1 題目描述 302

9.3.2 算法描述 302

9.3.3 代碼實現 304

9.3.4 代碼分析 306

9.4 在雙升序數組中快速查找給定值 306

9.4.1 題目描述 307

9.4.2 算法描述 307

9.4.3 代碼實現 307

9.4.4 代碼分析 309

第10章 圖論 310

10.1 地圖著色問題 310

10.1.1 問題描述 310

10.1.2 算法描述 310

10.1.3 代碼實現 311

10.1.4 代碼分析 315

10.2 迪傑斯特拉最短路徑算法 316

10.2.1 題目描述 316

10.2.2 算法描述 316

10.2.3 代碼實現 319

10.2.4 代碼分析 326

10.3 使用深度優先搜索解決容器倒水問題 327

10.3.1 問題描述 327

10.3.2 算法描述 327

10.3.3 代碼實現 329

10.3.4 代碼分析 333

第11章 貪婪算法 335

11.1 最小生成樹 335

11.1.1 題目描述 335

11.1.2 算法描述 336

11.1.3 代碼實現 339

11.1.4 代碼分析 344

11.2 霍夫曼編碼 344

11.2.1 題目描述 345

11.2.2 算法描述 345

11.2.3 代碼實現 347

11.2.4 代碼分析 349

11.3 離散點集的最大覆蓋率問題 350

11.3.1 題目描述 350

11.3.2 算法描述 351

11.3.3 代碼實現 352

11.3.4 代碼分析 355

第12章 動態規劃 356

12.1 鋼管最優切割方案 356

12.1.1 問題描述 357

12.1.2 算法描述 357

12.1.3 代碼實現 358

12.1.4 代碼分析 360

12.2 查找最大共同子串 361

12.2.1 問題描述 362

12.2.2 算法描述 362

12.2.3 代碼實現 364

12.2.4 代碼分析 366

12.3 將最大共同子串算法的空間複雜度從O(n2)改進為O(n) 366

12.3.1 問題描述 367

12.3.2 算法描述 367

12.3.3 代碼實現 368

12.3.4 代碼分析 371

您曾經瀏覽過的商品

購物須知

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

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

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

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

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

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

暢銷榜

客服中心

收藏

會員專區