算法面試
李春葆、李筱馳
買這商品的人也買了...
-
$2,180$2,071 -
$960$864 -
$550$550 -
$700$665 -
$301並行演算法設計與性能優化
-
$948$901 -
$454深入淺出 HTTPS : 從原理到實戰
-
$880$695 -
$774$735 -
$602用“芯”探核基於龍芯的 Linux 內核探索解析
-
$1,680$1,596 -
$594$564 -
$708$673 -
$594$564 -
$1,840$1,748 -
$505極限黑客攻防:CTF 賽題揭秘
-
$419$398 -
$662算法訓練營:海量圖解 + 競賽刷題 (入門篇)
-
$774$735 -
$400C++ 新經典:模板與泛型編程
-
$316程序員的制勝技
-
$948$901 -
$534$507 -
$709LLVM 編譯器原理與實務
-
$454深度學習編譯器設計
相關主題
商品描述
目錄大綱
目錄
掃一掃
配套資源
第一部分數據結構及其應用
第1章數組
1.1數組概述
1.1.1數組的定義
1.1.2數組的知識點
1.2數組的基本算法設計
1.2.1LeetCode27——移除元素★
1.2.2LeetCode283——移動0★
1.2.3LeetCode2460——對數組執行操作★
1.2.4LeetCode75——顏色的分類★★
1.2.5LeetCode189——輪轉數組★★
1.3有序數組的算法設計
1.3.1LeetCode26——刪除有序數組中的重復項★
1.3.2LeetCode80——刪除有序數組中的重復項Ⅱ★★
1.3.3LeetCode1287——有序數組中出現次數超過元素總數25%的
元素★
1.3.4LeetCode1200——最小絕對差★
1.3.5LeetCode88——合並兩個有序數組★
1.3.6LeetCode349——兩個數組的交集★
1.3.7LeetCode977——有序數組的平方★
1.3.8LeetCode1470——重新排列數組★
1.3.9LeetCode1213——3個有序數組的交集★
1.3.10LeetCode264——醜數Ⅱ★★
1.3.11LeetCode373——查找和最小的k對數字★★
推薦練習題
第2章鏈表
2.1鏈表概述
2.1.1鏈表的定義
2.1.2鏈表的知識點
2.2鏈表基本操作的算法設計
2.2.1LeetCode203——移除鏈表元素★
2.2.2LeetCode206——反轉鏈表★
2.2.3LeetCode328——奇偶鏈表★★
2.2.4LeetCode61——旋轉鏈表★★
2.2.5LeetCode141——環形鏈表★
2.2.6LeetCode138——復制帶隨機指針的鏈表★★
2.2.7LeetCode707——設計鏈表★★
2.3鏈表的分組算法設計
2.3.1LeetCode92——反轉鏈表Ⅱ★★
2.3.2LeetCode24——兩兩交換鏈表中的結點★★
2.3.3LeetCode25——k個一組翻轉鏈表★★★
2.4有序鏈表的算法設計
2.4.1LeetCode83——刪除排序鏈表中的重復元素★
2.4.2LeetCode82——刪除排序鏈表中的重復元素Ⅱ★★
2.4.3LeetCode21——合並兩個有序鏈表★
2.4.4LeetCode23——合並k個有序鏈表★★★
2.4.5LeetCode1634——求兩個多項式鏈表的和★★
推薦練習題
第3章棧
3.1棧概述
3.1.1棧的定義
3.1.2棧的知識點
3.2擴展棧的算法設計
3.2.1LeetCode1381——設計一個支持增量操作的棧★★
3.2.2LeetCode155——最小棧★
3.2.3LeetCode716——最大棧★★★
3.3棧應用的算法設計
3.3.1LeetCode1544——整理字符串★★
3.3.2LeetCode71——簡化路徑★★
3.3.3LeetCode1441——用棧操作構建數組★
3.3.4LeetCode946——驗證棧序列★★
3.3.5LeetCode20——有效的括號★
3.3.6LeetCode1249——刪除無效的括號★★
3.3.7LeetCode32——最長的有效括號子串的長度★★★
3.4單調棧應用的算法設計
3.4.1LeetCode503——下一個更大元素Ⅱ★★
3.4.2LeetCode496——下一個更大元素Ⅰ★
3.4.3LeetCode739——每日溫度★★
3.4.4LeetCode316——去除重復字母★★
3.4.5LeetCode84——柱狀圖中最大的矩形★★★
3.4.6LeetCode42——接雨水★★★
推薦練習題
第4章隊列和雙端隊列
4.1隊列和雙端隊列概述
4.1.1隊列和雙端隊列的定義
4.1.2隊列和雙端隊列的知識點
4.2擴展隊列的設計
4.2.1LeetCode622——設計循環隊列★★
4.2.2LeetCode641——設計循環雙端隊列★★
4.2.3LeetCode1670——設計前中後隊列★★
4.2.4LeetCode232——用棧實現隊列★
4.3隊列的應用
4.3.1LeetCode1700——無法吃午餐的學生的數量★
4.3.2LeetCode933——最近的請求次數★
4.3.3LeetCode225——用隊列實現棧★
4.3.4LeetCode281——鋸齒迭代器★★
4.3.5LeetCode1047——刪除字符串中所有的相鄰重復項★
4.4單調隊列
4.4.1LeetCode239——滑動窗口的最大值★★★
4.4.2LeetCode1438——絕對差不超過限制的最長連續子數組★★
4.4.3LCR184——設計自助結算系統★★
推薦練習題
第5章哈希表
5.1哈希表概述
5.1.1哈希表的定義
5.1.2哈希表的知識點
5.2哈希表的實現
5.2.1LeetCode705——設計哈希集合★
5.2.2LeetCode706——設計哈希映射★
5.3哈希集合應用的算法設計
5.3.1LeetCode349——兩個數組的交集★
5.3.2LeetCode202——快樂數★
5.3.3LeetCode217——存在重復元素★
5.3.4LeetCode379——電話目錄管理系統★★
5.3.5LeetCode128——最長連續序列★★
5.3.6LeetCode41——缺失的第一個正數★★★
5.3.7LeetCode1436——旅行終點站★
5.4哈希映射應用的算法設計
5.4.1LeetCode350——兩個數組的交集Ⅱ★
5.4.2LeetCode1460——通過翻轉子數組使兩個數組相等★
5.4.3LeetCode383——贖金信★
5.4.4LeetCode347——前k個高頻元素★★
5.4.5LeetCode242——有效的字母異位詞★
5.4.6LeetCode205——同構字符串★
5.4.7LeetCode1——兩數之和★
5.4.8LeetCode219——存在重復元素Ⅰ★
5.4.9LeetCode49——字母異位詞的分組★★
5.4.10LeetCode249——移位字符串的分組★★
推薦練習題
第6章二叉樹
6.1二叉樹概述
6.1.1二叉樹的定義
6.1.2二叉樹的知識點
6.2二叉樹先序、中序和後序遍歷應用的算法設計
6.2.1LeetCode144——二叉樹的先序遍歷★
6.2.2LeetCode94——二叉樹的中序遍歷★
6.2.3LeetCode145——二叉樹的後序遍歷★
6.2.4LeetCode965——單值二叉樹★
6.2.5LeetCode100——相同的樹★
6.2.6LeetCode572——另一棵樹的子樹★
6.2.7LeetCode543——二叉樹的直徑★
6.2.8LeetCode563——二叉樹的坡度★
6.2.9LeetCode2331——計算二叉樹的布爾運算值★
6.2.10LeetCode199——二叉樹的右視圖★★
6.2.11LeetCode662——二叉樹的最大寬度★★
6.3二叉樹層次遍歷應用的算法設計
6.3.1LeetCode102——二叉樹的層次遍歷★★
6.3.2LeetCode199——二叉樹的右視圖★★
6.3.3LeetCode637——二叉樹的層平均值★
6.3.4LeetCode2471——逐層排序二叉樹所需的最少操作數目★★
6.3.5LeetCode2415——反轉二叉樹的奇數層★★
6.3.6LeetCode1602——找二叉樹中最近的右側結點★★
6.4構造二叉樹的算法設計
6.4.1LeetCode105——由先序與中序遍歷序列構造二叉樹★★
6.4.2LeetCode106——由中序與後序遍歷序列構造二叉樹★★
6.4.3LeetCode2196——根據描述創建二叉樹★★
6.5二叉樹序列化的算法設計
6.5.1LeetCode297——二叉樹的序列化與反序列化★★★
6.5.2LeetCode100——相同的樹★
6.5.3LeetCode572——另一棵樹的子樹★
推薦練習題
第7章二叉搜索樹
7.1二叉搜索樹概述
7.1.1二叉搜索樹的定義
7.1.2二叉搜索樹的知識點
7.2二叉搜索樹基本操作的算法設計
7.2.1LeetCode1008——先序遍歷構造二叉搜索樹★★
7.2.2LeetCode700——二叉搜索樹中的搜索★
7.2.3LeetCode701——二叉搜索樹中的插入操作★★
7.2.4LeetCode450——刪除二叉搜索樹中的結點★★
7.3二叉搜索樹特性的算法設計
7.3.1LeetCode270——最接近的二叉搜索樹值★
7.3.2LeetCode235——二叉搜索樹的最近公共祖先★★
7.3.3LeetCode938——二叉搜索樹的範圍和★
7.3.4LeetCode669——修剪二叉搜索樹★★
7.3.5LeetCode776——拆分二叉搜索樹★★
7.3.6LeetCode285——二叉搜索樹中的中序後繼★★
7.3.7LeetCode255——驗證先序遍歷序列二叉搜索樹★★
7.4二叉搜索樹基於中序遍歷的算法設計
7.4.1LeetCode783——二叉搜索樹結點的最小距離★
7.4.2LeetCode230——二叉搜索樹中第k小的元素★★
7.4.3LeetCode98——驗證二叉搜索樹★★
7.4.4LeetCode538——把二叉搜索樹轉換為累加樹★★
7.4.5LeetCode99——恢復二叉搜索樹★★
7.4.6LeetCode173——二叉搜索樹迭代器★★
7.4.7LeetCode272——最接近的二叉搜索樹值Ⅱ★★★
推薦練習題
第8章平衡二叉樹
8.1平衡二叉樹概述
8.1.1平衡二叉樹的定義
8.1.2平衡二叉樹的知識點
8.2構造平衡二叉樹的算法設計
8.2.1LeetCode108——將有序數組轉換為平衡二叉樹★
8.2.2LeetCode109——將有序鏈表轉換為平衡二叉樹★★
8.2.3LeetCode1382——將二叉搜索樹轉換為平衡二叉樹★★
8.3平衡樹集合應用的算法設計
8.3.1LeetCode506——相對名次★
8.3.2LeetCode414——第三大的數★
8.3.3LeetCode855——考場就座★★
8.3.4LeetCode2353——設計食物評分系統★★
8.4平衡樹映射應用的算法設計
8.4.1LeetCode846——一手順子★★
8.4.2LeetCode981——基於時間的鍵值存儲★★
8.4.3LeetCode1912——設計電影租借系統★★★
推薦練習題
第9章優先隊列
9.1優先隊列概述
9.1.1優先隊列的定義
9.1.2優先隊列的知識點
9.2優先隊列的實現
9.2.1LeetCode912——排序數組★★
9.2.2LeetCode215——數組中第k個最大的元素★★
9.2.3LeetCode506——相對名次★
9.3優先隊列應用的算法設計
9.3.1LeetCode703——數據流中第k大的元素★
9.3.2LeetCode373——查找和最小的k對數字★★
9.3.3LeetCode23——合並k個有序鏈表★★★
9.3.4LeetCode239——滑動窗口的最大值★★★
9.3.5LeetCode1383——最大的團隊表現值★★★
9.3.6LeetCode2462——雇傭k位工人的總代價★★
推薦練習題
第10章並查集
10.1並查集概述
10.1.1並查集的定義
10.1.2並查集的實現
10.1.3帶權並查集
10.2一維並查集應用的算法設計
10.2.1LeetCode261——以圖判樹★★
10.2.2LeetCode323——無向圖中連通分量的數目★★
10.2.3LeetCode684——冗餘連接★★
10.2.4LeetCode785——判斷二分圖★★
10.2.5LeetCode990——等式方程的可滿足性★★
10.2.6LeetCode1061——按字典序排列最小的等價字符串★★
10.2.7LeetCode947——移除最多的同行或同列石頭★★
10.3二維並查集
10.3.1LeetCode200——島嶼的數量★★
10.3.2LeetCode1559——在二維網格圖中探測環★★
10.4帶權並查集
10.4.1LeetCode695——最大島嶼的面積★★
10.4.2LeetCode128——最長連續序列★★
10.4.3LeetCode1254——統計封閉島嶼的數目★★
10.4.4LeetCode399——除法求值★★
推薦練習題
第11章前綴和與差分
11.1前綴和與差分概述
11.1.1前綴和
11.1.2差分
11.2一維前綴和應用的算法設計
11.2.1LeetCode724——尋找數組的中心下標★
11.2.2LeetCode238——除自身以外數組的乘積★★
11.2.3LeetCode1749——任意子數組和的絕對值的最大值★★
11.2.4LeetCode1524——和為奇數的子數組的數目★★
11.2.5LeetCode560——和為k的子數組★★
11.2.6LeetCode325——和等於k的最長子數組的長度★★
11.2.7LeetCode523——連續子數組和★★
11.2.8LeetCode53——最大子數組和★★
11.3二維前綴和應用的算法設計
11.3.1LeetCode304——二維區域和檢索(矩陣不可變)★★
11.3.2LeetCode1074——元素和為目標值的子矩陣的數量★★★
11.3.3面試題17.24——最大子矩陣★★★
11.4差分數組應用的算法設計
11.4.1LeetCode370——區間加法★★
11.4.2LeetCode1109——航班預訂統計★★
11.4.3LeetCode2536——子矩陣元素加1★★
推薦練習題
第12章線段樹
12.1線段樹概述
12.1.1線段樹的定義
12.1.2簡單線段樹的實現
12.1.3復雜線段樹的實現
12.1.4線段樹的動態開點實現
12.1.5離散化
12.2簡單線段樹應用的算法設計
12.2.1LeetCode303——區域和檢索(數組不可變)★
12.2.2LeetCode308——二維區域和檢索(可改)★★★
12.2.3LeetCode327——區間和的個數★★★
12.3復雜線段樹應用的算法設計
12.3.1LeetCode715——Range模塊★★★
12.3.2LeetCode1622——奇妙序列★★★
12.4離散化在線段樹中的應用
12.4.1LeetCode327——區間和的個數★★★
12.4.2LeetCode315——計算右側小於當前元素的個數★★★
推薦練習題
第13章樹狀數組
13.1樹狀數組概述
13.1.1樹狀數組的定義
13.1.2樹狀數組的實現
13.2樹狀數組應用的算法設計
13.2.1LeetCode1649——通過指令創建有序數組★★★
13.2.2LeetCode1409——查詢帶鍵的排列★★
13.2.3LeetCode683——k個關閉的燈泡★★★
13.2.4LeetCode308——二維區域和檢索(可改)★★★
13.3離散化在樹狀數組中的應用
13.3.1LeetCode327——區間和的個數★★★
13.3.2LeetCode315——計算右側小於當前元素的個數★★★
推薦練習題
第14章字典樹和後綴數組
14.1字典樹和後綴數組概述
14.1.1字典樹
14.1.2後綴數組
14.2字典樹應用的算法設計
14.2.1LeetCode208——實現Trie(前綴樹)★★
14.2.2LeetCode14——最長公共前綴★
14.2.3LeetCode648——單詞替換★★
14.2.4LeetCode677——鍵值映射★★
14.2.5LeetCode792——匹配子序列的單詞數★★
14.3後綴數組應用的算法設計
14.3.1LeetCode1698——字符串的不同子串的個數★★
14.3.2LeetCode1044——最長重復子串★★★
推薦練習題