labuladong的算法筆記

labuladong的算法筆記

《labuladong的算法筆記》是2023年8月電子工業出版社出版圖書,作者是付東來。

基本介紹

  • 中文名:labuladong的算法筆記
  • 作者:付東來(@labuladong)
  • 出版時間:2023年8月
  • 出版社:電子工業出版社
  • ISBN:9787121457821
  • 定價:119 元
  • 開本:16 開
內容簡介,圖書目錄,

內容簡介

《labuladong的算法筆記》專攻算法刷題,訓練算法思維,應對算法筆試,注重用套路和框架思維解決問題,以不變應萬變。

圖書目錄

本書約定 / 1
程式語言基礎 / 4
第1章 核心框架篇 / 15
1.1 學習數據結構和算法的框架思維 15
1.1.1 數據結構的存儲方式 16
1.1.2 數據結構的基本操作 17
1.1.3 算法刷題指南 18
1.2 計算機算法的本質 24
1.2.1 算法的本質 24
1.2.2 數組/ 單鍊表系列算法 26
1.2.3 二叉樹系列算法 28
1.2.4 最後總結 33
1.3 動態規劃解題套路框架 33
1.3.1 斐波那契數列 35
1.3.2 湊零錢問題 40
1.3.3 最後總結 45
1.4 回溯算法解題套路框架 46
1.4.1 全排列問題 47
1.4.2 N皇后問題 52
1.4.3 最後總結 55
1.5 BFS算法解題套路框架 55
1.5.1 算法框架 56
1.5.2 二叉樹的最小高度 57
1.5.3 解開密碼鎖的最少次數 59
1.5.4 雙向BFS 最佳化 62
1.6 手把手帶刷二叉樹(綱領) 65
1.6.1 二叉樹的重要性 66
1.6.2 深入理解前、中、後序 67
1.6.3 兩種解題思路 71
1.6.4 後序位置的特殊之處 75
1.6.5 層序遍歷 79
1.7 寫了首詩,閉著眼睛都能寫出二分搜尋算法 81
1.7.1 二分搜尋框架 82
1.7.2 尋找一個數(基本的二分搜尋) 82
1.7.3 尋找左側邊界的二分搜尋 84
1.7.4 尋找右側邊界的二分搜尋 88
1.7.5 邏輯統一 90
1.8 寫了一個模板,把滑動視窗算法變成了默寫題 93
1.8.1 最小覆蓋子串 96
1.8.2 字元串排列 100
1.8.3 找所有字母異位詞 102
1.8.4 最長無重複子串 103
第2章 手把手刷數據結構 / 105
2.1 數組、鍊表 105
2.1.1 單鍊表的六大解題套路 105
2.1.2 數組雙指針的解題套路 116
2.1.3 小而美的算法技巧:前綴和數組 124
2.1.4 小而美的算法技巧:差分數組 128
2.2 數據結構設計 134
2.2.1 算法就像搭樂高:手寫LRU算法 135
2.2.2 算法就像搭樂高:手寫LFU算法 144
2.2.3 以O(1) 時間複雜度刪除/ 查找數組中的任意元素 151
2.2.4 單調棧結構解決三道算法題 159
2.2.5 單調佇列結構解決滑動視窗問題 164
第3章 手把手培養算法思維 / 170
3.1 二叉樹 170
3.1.1 手把手刷二叉樹(思路) 170
3.1.2 手把手刷二叉樹(構造) 179
3.1.3 手把手刷二叉樹(序列化) 192
3.2 二叉搜尋樹 215
3.2.1 手把手刷二叉搜尋樹(特性套用) 215
3.2.2 手把手刷二叉搜尋樹(增刪查改) 220
3.2.3 快速排序詳解及運用 227
3.3 圖論算法 237
3.3.1 圖論算法基礎 237
3.3.2 Union-Find算法詳解 245
3.3.3 最小生成樹之 Kruskal算法 259
3.4 暴力搜尋算法 268
3.4.1 回溯算法解決子集、排列、組合問題268
3.4.2 經典回溯算法:集合劃分問題 291
3.4.3 DFS算法搞定島嶼系列題目 305
3.4.4 BFS算法解決智力遊戲 317
第4章 手把手刷動態規劃 / 323
4.1 動態規劃核心原理 323
4.1.1 base case 和備忘錄的初始值怎么定 323
4.1.2 最優子結構和dp 數組的遍歷方向怎么定 329
4.1.3 算法時空複雜度分析實用指南 338
4.1.4 動態規劃的降維打擊:空間壓縮技巧 351
4.2 子序列類型問題 358
4.2.1 動態規劃設計:最長遞增子序列 358
4.2.2 詳解最大子數組和 367
4.2.3 詳解編輯距離問題 372
4.2.4 詳解最長公共子序列問題 381
4.2.5 詳解正則匹配問題 389
4.2.6 子序列問題解題模板 397
4.3 背包問題 404
4.3.1 0-1 背包問題解題框架 404
4.3.2 背包問題變體之子集分割 407
4.3.3 背包問題之零錢兌換 410
4.4 用動態規劃玩遊戲 414
4.4.1 最小路徑和問題 414
4.4.2 動態規划算法通關《魔塔》 419
4.4.3 高樓扔雞蛋問題 426
4.4.4 戳氣球問題 438
第5章 高頻面試系列 / 445
5.1 鍊表操作的遞歸思維一覽 445
5.1.1 遞歸反轉整個鍊表 446
5.1.2 反轉鍊表前N 個節點 448
5.1.3 反轉鍊表的一部分 449
5.2 田忌賽馬背後的算法決策 450
5.3 一道數組去重的算法題整蒙了 454
5.4 帶權重的隨機選擇算法 458
5.4.1 解法思路 459
5.4.2 解法代碼 460
5.5 二分搜尋題型套路分析 462
5.5.1 原始的二分搜尋代碼 463
5.5.2 二分搜尋問題的泛化 465
5.5.3 運用二分搜尋的套路框架 467
5.5.4 例題一:珂珂吃香蕉 468
5.5.5 例題二:運送貨物 471
5.5.6 例題三:分割數組 474
5.6 如何高效解決接雨水問題 475
5.6.1 核心思路 476
5.6.2 備忘錄最佳化 478
5.6.3 雙指針解法 479
5.6.4 擴展延伸 481
5.7 一個函式解決nSum 問題 483
5.7.1 twoSum 問題 483
5.7.2 3Sum 問題 486
5.7.3 4Sum 問題 488
5.7.4 100Sum 問題 489
5.8 一個方法解決最近公共祖先問題 491
5.8.1 尋找一個元素 492
5.8.2 解決五道題目 49

相關詞條

熱門詞條

聯絡我們