《 數據結構LeetCode線上編程實訓(C/C++語言)》是2022年清華大學出版社出版的圖書。
基本介紹
- 中文名: 數據結構LeetCode線上編程實訓(C/C++語言)
- 出版時間:2022年10月
- 出版社:清華大學出版社
- ISBN:9787302605201
內容簡介,圖書目錄,
內容簡介
本書是《數據結構教程(第6版•微課視頻•題庫版)》(李春葆主編,清華大學出版社出版,簡稱《教程》)的配套線上編程實訓指導書,詳細給出了《教程》中所有線上編程題(共143道線上編程題,均來自LeetCode網站)的解題思路和參考原始碼,提供了全部題目的講解視頻。書中線上編程題不僅涵蓋數據結構課程的基本知識點,還融合了各個知識點的運用和擴展,學習、理解和借鑑這些參考答案是掌握和提高數據結構知識的途徑。本書自成一體,可以脫離《教程》單獨使用。
本書適合高等院校計算機及相關專業學生使用,也適合IT企業面試者和編程愛好者研習。
圖書目錄
配套資源
第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——移除元素★
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——多數元素★
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——數組中的第k個元素★★
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——數組中的第k個元素★★
10.5.3LeetCode703——數據流中的第k大元素★
10.5.4LeetCode347——前k個高頻元素★★
10.6基數排序及其套用
10.6.1LeetCode75——顏色分類★★
10.6.2LeetCode164——間距★★★
附錄A所有線上編程題目列表
附錄B線上編程實驗報告示例