商品簡介
作者簡介
目次
相關商品
商品簡介
本書是一本講解程序員面試筆試算法的書,代碼採用Python語言編寫,書中除了講解如何解答算法問題以外,還引入了例子輔以說明,讓讀者更容易理解。
本書幾乎將程序員面試筆試過程中算法類真題一網打盡,在題目的廣度上,通過各種渠道,搜集了近3年來幾乎所有IT企業面試筆試算法的高頻題目,所選擇題目均為企業招聘使用題目。在題目的深度上,本書由淺入深,庖丁解牛式地分析每一個題目,並提煉歸納。同時,引入例子與源代碼、時間複雜度與空間複雜度的分析,這些內容是其他同類書籍所沒有的。本書根據真題所屬知識點進行分門別類,結構合理,條理清晰,對於讀者進行學習與檢索意義重大。
本書可作為計算機相關專業畢業生面試筆試的求職用書,也可以作為本科生、研究生學習數據結構與算法的輔導書籍,同時適合期望在計算機軟硬件行業大顯身手的計算機愛好者閱讀。
本書幾乎將程序員面試筆試過程中算法類真題一網打盡,在題目的廣度上,通過各種渠道,搜集了近3年來幾乎所有IT企業面試筆試算法的高頻題目,所選擇題目均為企業招聘使用題目。在題目的深度上,本書由淺入深,庖丁解牛式地分析每一個題目,並提煉歸納。同時,引入例子與源代碼、時間複雜度與空間複雜度的分析,這些內容是其他同類書籍所沒有的。本書根據真題所屬知識點進行分門別類,結構合理,條理清晰,對於讀者進行學習與檢索意義重大。
本書可作為計算機相關專業畢業生面試筆試的求職用書,也可以作為本科生、研究生學習數據結構與算法的輔導書籍,同時適合期望在計算機軟硬件行業大顯身手的計算機愛好者閱讀。
作者簡介
張波(1988-),現為某著名互贈網公司算法工程師。
目次
前言
面試筆試經驗技巧篇
經驗技巧1 如何巧妙地回答面試官的問題2
經驗技巧2 如何回答技術性的問題3
經驗技巧3 如何回答非技術性問題4
經驗技巧4 如何回答快速估算類問題5
經驗技巧5 如何回答算法設計問題6
經驗技巧6 如何回答系統設計題9
經驗技巧7 如何解決求職中的時間衝突問題11
經驗技巧8 如果面試問題曾經遇見過,是否要告知面試官12
經驗技巧9 被企業拒絕後是否可以再申請12
經驗技巧10 如何應對自己不會回答的問題13
經驗技巧11 如何應對面試官的“激將法”語言14
經驗技巧12 如何處理與面試官持不同觀點這個問題15
經驗技巧13 關注職場暗語15
面試筆試真題解析篇
第1章 鏈表21
1.1 如何實現鏈表的逆序22
1.2 如何從無序鏈表中移除重複項26
1.3 如何計算兩個單鏈表所代表的數之和29
1.4 如何對鏈表進行重新排序32
1.5 如何找出單鏈表中的倒數第k個元素35
1.6 如何檢測一個較大的單鏈表是否有環39
1.7 如何把鏈表相鄰元素翻轉41
1.8 如何把鏈表以K個結點為一組進行翻轉43
1.9 如何合併兩個有序鏈表46
1.10 如何在只給定單鏈表中某個結點的指針的情況下刪除該結點49
1.11 如何判斷兩個單鏈表(無環)是否交叉51
1.12 如何展開鏈接列表54
第2章 棧、隊列與哈希57
2.1 如何實現棧57
2.2 如何實現隊列60
2.3 如何翻轉棧的所有元素64
2.4 如何根據入棧序列判斷可能的出棧序列68
2.5 如何用O(1)的時間複雜度求棧中最小元素71
2.6 如何用兩個棧模擬隊列操作73
2.7 如何設計一個排序系統74
2.8 如何實現LRU緩存方案76
2.9 如何從給定的車票中找出旅程77
2.10 如何從數組中找出滿足a+b=c+d的兩個數對79
第3章 二叉樹81
3.1 二叉樹基礎知識81
3.2 如何把一個有序整數數組放到二叉樹中83
3.3 如何從頂部開始逐層打印二叉樹結點數據84
3.4 如何求一棵二叉樹的最大子樹和87
3.5 如何判斷兩棵二叉樹是否相等89
3.6 如何把二叉樹轉換為雙向鏈表90
3.7 如何判斷一個數組是否是二元查找樹後序遍歷的序列93
3.8 如何找出排序二叉樹上任意兩個結點的最近共同父結點94
3.9 如何複製二叉樹101
3.10 如何在二叉樹中找出與輸入整數相等的所有路徑102
3.11 如何對二叉樹進行鏡像反轉104
3.12 如何在二叉排序樹中找出第一個大於中間值的結點106
3.13 如何在二叉樹中找出路徑最大的和107
3.14 如何實現反向DNS查找緩存109
第4章 數組112
4.1 如何找出數組中唯一的重複元素112
4.2 如何查找數組中元素的最大值和最小值118
4.3 如何找出旋轉數組的最小元素121
4.4 如何找出數組中丟失的數124
4.5 如何找出數組中出現奇數次的數126
4.6 如何找出數組中第k小的數128
4.7 如何求數組中兩個元素的最小距離131
4.8 如何求解最小三元組距離134
4.9 如何求數組中絕對值最小的數138
4.10 如何求數組連續最大和141
4.11 如何找出數組中出現1次的數145
4.12 如何對數組旋轉147
4.13 如何在不排序的情況下求數組中的中位數148
4.14 如何求集合的所有子集150
4.15 如何對數組進行循環移位152
4.16 如何在有規律的二維數組中進行高效的數據查找155
4.17 如何尋找最多的覆蓋點157
4.18 如何判斷請求能否在給定的存儲條件下完成158
4.19 如何按要求構造新的數組160
4.20 如何獲取最好的矩陣鏈相乘方法161
4.21 如何求解迷宮問題163
4.22 如何從三個有序數組中找出它們的公共元素165
4.23 如何求兩個有序集合的交集167
4.24 如何對有大量重複的數字的數組排序171
4.25 如何對任務進行調度174
4.26 如何對磁盤分區176
第5章 字符串178
5.1 如何求一個字符串的所有排列178
5.2 如何求兩個字符串的最長公共子串183
5.3 如何對字符串進行反轉187
5.4 如何判斷兩個字符串是否為換位字符串189
5.5 如何判斷兩個字符串的包含關係191
5.6 如何對由大小寫字母組成的字符數組排序193
5.7 如何消除字符串的內嵌括號194
5.8 如何判斷字符串是否是整數196
5.9 如何實現字符串的匹配199
5.10 如何求字符串裡的最長回文子串202
5.11 如何按照給定的字母序列對字符數組排序208
5.12 如何判斷一個字符串是否包含重複字符210
5.13 如何找到由其他單詞組成的最長單詞212
5.14 如何統計字符串中連續的重複字符個數214
5.15 如何求最長遞增子序列的長度215
5.16 求一個串中出現的第一個最長重複子串216
5.17 如何求解字符串中字典序最大的子序列218
5.18 如何判斷一個字符串是否由另外一個字符串旋轉得到220
5.19 如何求字符串的編輯距離222
5.20 如何在二維數組中尋找最短路線224
5.21 如何截取包含中文的字符串227
5.22 如何求相對路徑228
5.23 如何查找到達目標詞的最短鏈長度229
第6章 基本數字運算232
6.1 如何判斷一個自然數是否是某個數的平方232
6.2 如何判斷一個數是否為2的n次方234
6.3 如何不使用除法操作符實現兩個正整數的除法236
6.4 如何只使用+= 操作符實現加減乘除運算240
6.5 如何根據已知
面試筆試經驗技巧篇
經驗技巧1 如何巧妙地回答面試官的問題2
經驗技巧2 如何回答技術性的問題3
經驗技巧3 如何回答非技術性問題4
經驗技巧4 如何回答快速估算類問題5
經驗技巧5 如何回答算法設計問題6
經驗技巧6 如何回答系統設計題9
經驗技巧7 如何解決求職中的時間衝突問題11
經驗技巧8 如果面試問題曾經遇見過,是否要告知面試官12
經驗技巧9 被企業拒絕後是否可以再申請12
經驗技巧10 如何應對自己不會回答的問題13
經驗技巧11 如何應對面試官的“激將法”語言14
經驗技巧12 如何處理與面試官持不同觀點這個問題15
經驗技巧13 關注職場暗語15
面試筆試真題解析篇
第1章 鏈表21
1.1 如何實現鏈表的逆序22
1.2 如何從無序鏈表中移除重複項26
1.3 如何計算兩個單鏈表所代表的數之和29
1.4 如何對鏈表進行重新排序32
1.5 如何找出單鏈表中的倒數第k個元素35
1.6 如何檢測一個較大的單鏈表是否有環39
1.7 如何把鏈表相鄰元素翻轉41
1.8 如何把鏈表以K個結點為一組進行翻轉43
1.9 如何合併兩個有序鏈表46
1.10 如何在只給定單鏈表中某個結點的指針的情況下刪除該結點49
1.11 如何判斷兩個單鏈表(無環)是否交叉51
1.12 如何展開鏈接列表54
第2章 棧、隊列與哈希57
2.1 如何實現棧57
2.2 如何實現隊列60
2.3 如何翻轉棧的所有元素64
2.4 如何根據入棧序列判斷可能的出棧序列68
2.5 如何用O(1)的時間複雜度求棧中最小元素71
2.6 如何用兩個棧模擬隊列操作73
2.7 如何設計一個排序系統74
2.8 如何實現LRU緩存方案76
2.9 如何從給定的車票中找出旅程77
2.10 如何從數組中找出滿足a+b=c+d的兩個數對79
第3章 二叉樹81
3.1 二叉樹基礎知識81
3.2 如何把一個有序整數數組放到二叉樹中83
3.3 如何從頂部開始逐層打印二叉樹結點數據84
3.4 如何求一棵二叉樹的最大子樹和87
3.5 如何判斷兩棵二叉樹是否相等89
3.6 如何把二叉樹轉換為雙向鏈表90
3.7 如何判斷一個數組是否是二元查找樹後序遍歷的序列93
3.8 如何找出排序二叉樹上任意兩個結點的最近共同父結點94
3.9 如何複製二叉樹101
3.10 如何在二叉樹中找出與輸入整數相等的所有路徑102
3.11 如何對二叉樹進行鏡像反轉104
3.12 如何在二叉排序樹中找出第一個大於中間值的結點106
3.13 如何在二叉樹中找出路徑最大的和107
3.14 如何實現反向DNS查找緩存109
第4章 數組112
4.1 如何找出數組中唯一的重複元素112
4.2 如何查找數組中元素的最大值和最小值118
4.3 如何找出旋轉數組的最小元素121
4.4 如何找出數組中丟失的數124
4.5 如何找出數組中出現奇數次的數126
4.6 如何找出數組中第k小的數128
4.7 如何求數組中兩個元素的最小距離131
4.8 如何求解最小三元組距離134
4.9 如何求數組中絕對值最小的數138
4.10 如何求數組連續最大和141
4.11 如何找出數組中出現1次的數145
4.12 如何對數組旋轉147
4.13 如何在不排序的情況下求數組中的中位數148
4.14 如何求集合的所有子集150
4.15 如何對數組進行循環移位152
4.16 如何在有規律的二維數組中進行高效的數據查找155
4.17 如何尋找最多的覆蓋點157
4.18 如何判斷請求能否在給定的存儲條件下完成158
4.19 如何按要求構造新的數組160
4.20 如何獲取最好的矩陣鏈相乘方法161
4.21 如何求解迷宮問題163
4.22 如何從三個有序數組中找出它們的公共元素165
4.23 如何求兩個有序集合的交集167
4.24 如何對有大量重複的數字的數組排序171
4.25 如何對任務進行調度174
4.26 如何對磁盤分區176
第5章 字符串178
5.1 如何求一個字符串的所有排列178
5.2 如何求兩個字符串的最長公共子串183
5.3 如何對字符串進行反轉187
5.4 如何判斷兩個字符串是否為換位字符串189
5.5 如何判斷兩個字符串的包含關係191
5.6 如何對由大小寫字母組成的字符數組排序193
5.7 如何消除字符串的內嵌括號194
5.8 如何判斷字符串是否是整數196
5.9 如何實現字符串的匹配199
5.10 如何求字符串裡的最長回文子串202
5.11 如何按照給定的字母序列對字符數組排序208
5.12 如何判斷一個字符串是否包含重複字符210
5.13 如何找到由其他單詞組成的最長單詞212
5.14 如何統計字符串中連續的重複字符個數214
5.15 如何求最長遞增子序列的長度215
5.16 求一個串中出現的第一個最長重複子串216
5.17 如何求解字符串中字典序最大的子序列218
5.18 如何判斷一個字符串是否由另外一個字符串旋轉得到220
5.19 如何求字符串的編輯距離222
5.20 如何在二維數組中尋找最短路線224
5.21 如何截取包含中文的字符串227
5.22 如何求相對路徑228
5.23 如何查找到達目標詞的最短鏈長度229
第6章 基本數字運算232
6.1 如何判斷一個自然數是否是某個數的平方232
6.2 如何判斷一個數是否為2的n次方234
6.3 如何不使用除法操作符實現兩個正整數的除法236
6.4 如何只使用+= 操作符實現加減乘除運算240
6.5 如何根據已知
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。