配套資源
第1章緒論
1.1LeetCode網站在線編程說明
1.2基礎算法設計
1.2.1LeetCode7——整數反轉★
1.2.2LeetCode66——加一★
1.2.3LeetCode1——兩數之和★
1.2.4LeetCode1588——所有奇數長度子數組的和★
第2章線性表
2.1順序表及其應用
2.1.1順序表的實現
2.1.2LeetCode67——二進制求和★
2.1.3LeetCode27—&mdash素★
2.2有序順序表及其應用
2.2.1LeetCode26——刪除有序數組中的重復項★
2.2.2LeetCode80——刪除有序數組中的重復項Ⅱ★★
2.2.3LeetCode88——合並兩個有序數組★
2.2.4LeetCode4——尋找兩個正序數組的中位數★★★
2.3鏈表的實現
2.3.1LeetCode707——設計鏈表★★
2.3.2LeetCode382——鏈表隨機結點★★
2.4單鏈表及其應用
2.4.1LeetCode203——移素★
2.4.2LeetCode237——刪除鏈表中的結點★
2.4.3LeetCode206——翻轉鏈表★
2.4.4LeetCode92——翻轉鏈表Ⅱ★★
2.4.5LeetCode328——奇偶鏈表★★
2.4.6LeetCode86——分隔鏈表★★
2.4.7LeetCode24——兩兩交換鏈表中的結點★★
2.4.8LeetCode876——鏈表的中間結點★
2.4.9LeetCode234——回文鏈表★
2.4.10LeetCode143——重排鏈表★★
2.4.11LeetCode147——對鏈表進行插入排序★★
2.4.12LeetCode25——k個一組翻轉鏈表★★★
2.4.13LeetCode725——分隔鏈表★★
2.5有序單鏈表及其應用
2.5.1LeetCode83——刪除有序鏈表中素★
2.5.2LeetCode82——刪除有序鏈表中素Ⅱ★★
2.5.3LeetCode21——合並兩個有序鏈表★
2.5.4LeetCode23——合並k個升序鏈表★★★
第3章棧和隊列
3.1棧的實現
3.1.1LeetCode1381——設計一個支持增量操作的棧★★
3.1.2LeetCode155——小棧★
3.2棧的應用
3.2.1STL中的stack棧容器
3.2.2LeetCode20——有效的括號★
3.2.3LeetCode1249——移除無效的括號★★
3.2.4LeetCode946——驗證棧序列★★
3.2.5LeetCode1441——用棧操作構建數組★
3.3表達式求值
3.3.1LeetCode150——逆波蘭表達式求值★★
3.3.2LeetCode227——基本計算器Ⅱ★★
3.3.3LeetCode224——基本計算器★★★
3.4隊列的實現
3.4.1LeetCode622——設計循環隊列★★
3.4.2LeetCode641——設計循環雙端隊列★★
3.5棧和隊列相互實現
3.5.1STL中的queue隊列容器
3.5.2LeetCode225——用隊列實現棧★
3.5.3LeetCode232——用棧實現隊列★
第4章串
4.1基本串操作
4.1.1LeetCode125——驗證回文串★
4.1.2LeetCode14——長公共前綴★
4.1.3LeetCode443——壓縮字符串★★
4.2串模式匹配
4.2.1LeetCode28——實現strStr()★
4.2.2LeetCode459——重復的子字符串★
4.2.3LeetCode1408——數組中的字符串匹配★
第5章遞歸
5.1簡單遞歸算法設計
5.1.1LeetCode509——斐波那契數★
5.1.2LeetCode50——Pow(x,n)★★
5.1.3LeetCode206——翻轉鏈表★
5.1.4LeetCode234——回文鏈表★
5.1.5LeetCode24——兩兩交換鏈表中的結點★★
5.2復雜遞歸算法設計
5.2.1LeetCode59——螺旋矩陣Ⅱ★★
5.2.2LeetCode51——n皇後
第6章數組和矩陣
6.1數組
6.1.1LeetCode485——連續1的個數★
6.1.2LeetCode169—&mdash素★
6.1.3LeetCode283——移動零★
6.2矩陣
6.2.1LeetCode867——轉置矩陣★
6.2.2LeetCode1572——矩陣素的和★
6.2.3LeetCode566——重塑矩陣★
6.2.4LeetCode766——托普利茨矩陣★
第7章樹和二叉樹
7.1二叉樹的先序、中序和後序遍歷
7.1.1二叉樹的存儲結構及其創建
7.1.2LeetCode144——二叉樹的先序遍歷★★
7.1.3LeetCode94——二叉樹的中序遍歷★★
7.1.4LeetCode145——二叉樹的後序遍歷★★
7.2二叉樹的層次遍歷
7.2.1LeetCode102——二叉樹的層次遍歷★★
7.2.2LeetCode107——二叉樹的層次遍歷Ⅱ★★
7.3二叉樹遍歷算法的應用
7.3.1LeetCode872——葉子相似的樹★
7.3.2LeetCode617——合並二叉樹★
7.3.3LeetCode236——二叉樹的近公共祖先★★
7.3.4LeetCode226——翻轉二叉樹★
7.3.5LeetCode114——二叉樹展開為鏈表★★
7.3.6LeetCode104——二叉樹的深度★
7.3.7LeetCode111——二叉樹的小深度★
7.3.8LeetCode993——二叉樹的堂兄弟結點★
7.3.9LeetCode515——在每個樹行中找值★
7.3.10LeetCode513——找樹左下角的值★
7.3.11LeetCode101——對稱二叉樹★
7.3.12LeetCode662——二叉樹寬度★★
7.3.13LeetCode112——路徑總和★
7.3.14LeetCode257——二叉樹的所有路徑★
7.3.15LeetCode113——路徑總和Ⅱ★★
7.4二叉樹的構造
7.4.1LeetCode105——從先序與中序遍歷序列構造二叉樹★★
7.4.2LeetCode106——從中序與後序遍歷序列構造二叉樹★★
7.4.3LeetCode889——根據先序和後序遍歷序列構造二叉樹★★
7.4.4LeetCode654——二叉樹★★
7.4.5LeetCode100——相同的樹★
7.4.6LeetCode572——另一棵樹的子樹★
7.5樹
7.5.1樹的存儲結構
7.5.2LeetCode589——N叉樹的先根遍歷★
7.5.3LeetCode429——N叉樹的層序遍歷★★
第8章圖
8.1圖的基本應用
8.1.1圖的存儲結構
8.1.2LeetCode997——找到小鎮的法官★
8.1.3LeetCode1615——網絡秩★★
8.2圖遍歷及其應用
8.2.1LeetCode200——島嶼數量★★
8.2.2LeetCode547——省份數量★★
8.2.3LeetCode785——判斷二分圖★★
8.2.4LeetCode130——被圍繞的區域★★
8.2.5LeetCode1091——二進制矩陣中的短路徑★★
8.2.6LeetCode994——腐爛的橘子★★
8.2.7LeetCode542——01矩陣★★
8.2.8LeetCode934——短的橋★★
8.2.9LeetCode797——所有可能的路徑★★
8.3小生成樹
8.3.1LeetCode1584——連接所有點的小費用★★
8.3.2LeetCode684——冗餘連接★★
8.3.3LeetCode1631——小體力消耗路徑★★
8.4短路徑
8.4.1LeetCode743——網絡延遲時間★★
8.4.2LeetCode1334——閾值距離內鄰居少的城市★★
8.5拓撲排序
8.5.1LeetCode207——課程表★★
8.5.2LeetCode210——課程表Ⅱ★★
8.5.3LeetCode1462——課程表Ⅳ★★
第9章查找
9.1二分查找及其應用
9.1.1LeetCode240——搜索二維矩陣Ⅱ★★
9.1.2LeetCode704——二分查找★
9.1.3LeetCode35——搜索插入位置★
9.1.4LeetCode34——在有序數組素的個和後一個
位置★★
9.1.5LeetCode33——搜索旋轉有序數組★★
9.1.6LeetCode81——搜索旋轉有序數組Ⅱ★★
9.1.7LeetCode162——尋找峰值★★
9.1.8LeetCode4——尋找兩個正序數組的中位數★★★
9.2二叉排序樹及其應用
9.2.1LeetCode96——不同的二叉排序樹★★
9.2.2LeetCode95——不同的二叉排序樹Ⅱ★★
9.2.3LeetCode700——二叉排序樹中的搜索★
9.2.4LeetCode450——刪除二叉排序樹中的結點★
9.2.5LeetCode235——二叉排序樹的近公共祖先★
9.2.6LeetCode98——驗證二叉排序樹★★
9.2.7LeetCode938——二叉排序樹的範圍和★
9.3平衡二叉樹及其應用
9.3.1STL中的map和set容器
9.3.2LeetCode110——平衡二叉樹★
9.3.3LeetCode1382——將二叉排序樹變平衡★★
9.3.4LeetCode826——安排工作以達到收益★★
9.3.5LeetCode414——第三大的數★
9.4哈希表及其應用
9.4.1STL中的unordered_map容器
9.4.2LeetCode705——設計哈希集合★
9.4.3LeetCode146——LRU緩存機制★★
9.4.4LeetCode215——數組中的素★★
9.4.5LeetCode380——以常數時間插入、刪除和獲素★★
第10章內排序
10.1基本排序方法
10.1.1LeetCode1528——重新排列字符串★
10.1.2LeetCode912——排序數組★★
10.2快速排序的應用
10.2.1STL中的sort()排序算法
10.2.2LeetCode148——排序鏈表★★
10.2.3LeetCode922——按奇偶排序數組Ⅱ★
10.3二路歸並排序的應用
10.3.1LeetCode148——排序鏈表★★
10.3.2劍指Offer51——數組中的逆序對★★★
10.3.3LeetCode315——計算右側小素的個數★★★
10.3.4LeetCode493——翻轉對★★★
10.4堆(優先隊列)的應用
10.4.1STL中的priority_queue容器
10.4.2LeetCode973——接近原點的k個點★★
10.4.3LeetCode295——數據流的中位數★★★
10.4.4LeetCode239——滑動窗口中的值★★★
10.5topk問題
10.5.1劍指Offer40——小的k個數★
10.5.2LeetCode215——數組中的素★★
10.5.3LeetCode703——數據流中的素★
10.5.4LeetCode347——前k素★★
10.6基數排序及其應用
10.6.1LeetCode75——顏色分類★★
10.6.2LeetCode164——間距★★★
附錄A所有在線編程題目列表
附錄B在線編程實驗報告示例