劍指-Offer
該專欄收錄了學習《劍指-Offer》第二版書中的面試題,書中編程題是新大多以 LeetCode
對應系列的線上 OJ
給解答,下面會以章節的形式給出博主總結的本書中各個面試題的鏈接,方便對應查閱、學習。
第 2 章:面試需要的基礎知識
2.2 編程語言
2.3 數據結構
-
[劍指-Offer] 3. 數組中重複的數字(哈希、抽屜原理、代碼優化、多方法)
-
[劍指-Offer] 4. 二維數組中的查找(數學、二分法)
-
[劍指-Offer] 5. 替換空格(反向思維、代碼優化、多方法)
-
[劍指-Offer] 6. 從尾到頭打印鏈表(鏈表逆置、遞歸、魯棒性、多方法)
-
[劍指-Offer] 7. 重建二叉樹(二叉樹、遞歸建樹)
-
[劍指-Offer] 8. 二叉樹的下一個結點(多情況分析、畫圖分析)
-
[劍指-Offer] 9. 用兩個棧實現隊列(棧、隊列、模擬)
2.4 算法和數據操作
-
[劍指-Offer] 10. I. 斐波那契數列及II. 青蛙跳臺階問題(遞歸、fib快速計算、fib求和公式、fib通項公式)
-
[劍指-Offer] 11. 旋轉數組的最小數字(二分法、分治、遞歸)
-
[劍指-Offer] 12. 矩陣中的路徑(回溯、DFS、遞歸、代碼優化)
-
[劍指-Offer] 13. 機器人的運動範圍(回溯、DFS、遞歸、代碼優化)
-
[劍指-Offer] 14. 剪繩子I、剪繩子II(數學、動態規劃、貪心、代碼優化)
-
[劍指-Offer] 15. 二進制中1的個數(位運算、技巧、代碼優化)
第 3 章:高質量的代碼
3.3 代碼的完整性
-
[劍指-Offer] 16. 數值的整數次方(快速冪、遞歸、代碼優化、多方法)
-
[劍指-Offer] 17. 打印從1到最大的n位數(高精度、全排列、代碼優化、多方法)
-
[劍指-Offer] 18. 刪除鏈表的節點(鏈表刪除、遞歸、代碼優化)
-
[劍指-Offer] 19. 刪除鏈表的節點(遞歸、動態規劃、多方法)
-
[劍指-Offer] 20. 表示數值的字符串(多情況分析、分類討論、代碼優化)
-
[劍指-Offer] 21. 調整數組順序使奇數位於偶數前面(雙指針、解耦)
3.4 代碼的魯棒性
-
[劍指-Offer] 22. 鏈表中倒數第k個節點(常規解法、特殊情況、魯棒性)
-
[劍指-Offer] 23. 鏈表中環的入口結點(帶環鏈表、快慢指針、代碼優化)
-
[劍指-Offer] 24. 反轉鏈表(常規解法、特殊情況、魯棒性)
-
[劍指-Offer] 25. 合併兩個排序的鏈表(遞歸、迭代、常規解法)
-
[劍指-Offer] 26. 樹的子結構(遞歸、代碼簡化)
第 4 章:解決面試題的思路
4.2 畫圖讓抽象問題形象化
4.3 舉例讓抽象問題具體化
-
[劍指-Offer] 30. 包含min函數的棧(邊界情況,代碼優化)
-
[劍指-Offer] 31. 棧的壓入、彈出序列(模擬、常規解法)
-
[劍指-Offer] 32. I. II.III從上到下打印二叉樹(層序遍歷、棧、常規解法)
-
[劍指-Offer] 33. 二叉搜索樹的後序遍歷序列(遞歸、單調棧、代碼優化)
-
[劍指-Offer] 34. 二叉樹中和爲某一值的路徑(遞歸、常規解法)
4.4 分解讓複雜問題簡單化
-
[劍指-Offer] 35. 複雜鏈表的複製(HashMap、遞歸、代碼優化)
-
[劍指-Offer] 36. 二叉搜索樹與雙向鏈表(中序遍歷、遞歸)
-
[劍指-Offer] 37. 序列化二叉樹(層序遍歷、前序遍歷、遞歸、特殊情況)
-
[劍指-Offer] 38. 字符串的排列(全排列、遞歸、回溯、巧妙解法)
第 5 章:優化時間和空間效率
5.2 時間效率
-
[劍指-Offer] 39. 數組中出現次數超過一半的數字(多數投票算法、sort函數、代碼優化)
-
[劍指-Offer] 40. 最小的k個數(快速排序、海量數據、巧妙解法)
-
[劍指-Offer] 41. 數據流中的中位數(堆、泛型算法、頂級解法)
-
[劍指-Offer] 42. 連續子數組的最大和(前綴和、雙指針、動態規劃、代碼優化)
-
[劍指-Offer] 43. 1–n整數中1出現的次數(數學、思維、大數、巧妙解法)
-
[劍指-Offer] 44. 數字序列中某一位的數字(數學、思維、巧妙解法)
-
[劍指-Offer] 45. 把數組排成最小的數(數學、思維、lambada表達式、巧妙解法)
-
[劍指-Offer] 46. 把數字翻譯成字符串(思維、遞歸、巧妙解法)
-
[劍指-Offer] 48. 最長不含重複字符的子字符串(滑動窗口、哈希映射、常規解法)
5.3 時間效率與空間效率的平衡
-
[劍指-Offer] 49. 醜數(思維、代碼優化、巧妙解法)
-
[劍指-Offer] 50. 第一個只出現一次的字符(哈希映射、常規解法)
-
[劍指-Offer] 51. 數組中的逆序對(思維、歸併排序、巧妙解法)
-
[劍指-Offer] 52. 兩個鏈表的第一個公共節點(思維、快慢指針、巧妙解法)
第 6 章:面試中的各項能力
6.3 知識遷移能力
-
[劍指-Offer] 53. I. 在排序數組中查找數字 I 及 II. 0~n-1中缺失的數字(二分法、代碼優化、巧妙解法)
-
[劍指-Offer] 54. 二叉搜索樹的第k大節點(中序遍歷、常規解法)
-
[劍指-Offer] 55. I. 二叉樹的深度及II. 平衡二叉樹(二叉樹、後序遍歷、代碼優化、巧妙解法)
-
[劍指-Offer] 56. I. 數組中數字出現的次數及II. 數組中數字出現的次數 II(位運算、異或、頂級解法)
-
[劍指-Offer] 57. 和爲s的兩個數字及II. 和爲s的連續正數序列(數學、二分法、滑動窗口、巧妙解法)
-
[劍指-Offer] 58. I. 翻轉單詞順序及II. 左旋轉字符串(思維、字符串處理、巧妙解法)
-
[劍指-Offer] 59. I. 滑動窗口的最大值及II. 隊列的最大值(模擬、單調隊列、常規解法)
6.4 抽象建模能力
-
[劍指-Offer] 60. n個骰子的點數(遞歸、動態規劃、巧妙解法)
-
[劍指-Offer] 61. 撲克牌中的順子(模擬+常規解法)
-
[劍指-Offer] 62. 圓圈中最後剩下的數字(數學、環形鏈表、約瑟夫環、巧妙解法)
-
[劍指-Offer] 63. 股票的最大利潤(數組、數學、動態規劃、頂級解法)
6.5 發散思維能力
-
[劍指-Offer] 64. 求1+2+…+n(思維、頂級解法)
-
[劍指-Offer] 65. 不用加減乘除做加法(位運算、思維、頂級解法)
-
[劍指-Offer] 66. 構建乘積數組(思維、模擬、頂級解法)
第 7 章:兩個面試案例
7.1 案例一
7.1 案例二
讀書總結
看書 + OJ
刷題,從 2020-02-14 開始,至 2020-03-11 結束,中間幾天整理了排序算法及其它事情,導致進度偏慢了一些,不過也是收穫頗豐。書中的題非常經典,講解給人以豁然開朗的感覺,這應該就是該書這麼多年經久不衰的最大競爭力吧。
過段時間進行復看,加深理解並尋求更好的解法,或是整理下排版。
所有的面試題 OJ
,均給出 OJ
原地址鏈接,方便讀者進行測試。每道題也有博主的 題目解析 及經過 OJ
測試的 源代碼,在部分困難問題上博主參考本書作者的寫法、題解大佬的寫法及其它網上資源,在此十分感謝大家的幫助。
同時,我也將代碼上傳到我的 GitHub
倉庫:sword_to_offer ,歡迎大家給力 star !!!
。
希望博主的這些博文能給你帶來收穫。
Y-puyu — 2020年3月11日