《数据结构与算法之美》学习汇总
生活随笔
收集整理的這篇文章主要介紹了
《数据结构与算法之美》学习汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此篇文章是對自己學習這門課程的一個總結和課后的一些練習,做一個匯總,希望對大家有幫助。本人是半路程序員,2018年2月開始學習C++的,下面的代碼基本都是C++11版本的,代碼有錯誤的地方請不吝留言賜教。附有部分練習LeetCode、POJ的題目。updated on 2019.9.3
1.鏈表 Linked List
1.1 單鏈表
1.2 練習
- 判斷字符串是否為回文串
- 約瑟夫環問題
- LRU緩存策略
- 單鏈表的歸并排序
- 單鏈表中環的檢測
- POJ 1250 計算流失的顧客數
- LeetCode 206. 反轉鏈表
2.棧 Stack
2.1 順序棧、鏈式棧
2.2 共享順序棧
2.3 練習
- POJ 1028 瀏覽器前進后退
- POJ 1363 火車廂排隊
- LeetCode 557. 反轉字符串中的單詞 III(棧)
3.隊列 Queue
3.1 鏈式隊列、順序隊列
3.2 循環順序隊列
3.3 練習
- 打印楊輝三角
- POJ 2259 團隊排隊問題
- POJ 1581 優先隊列 priority_queue 比賽勝者求解
- POJ 3481 double queue
4.遞歸 Recursion
4.1 走臺階問題
4.2 漢諾塔問題
4.3 練習
- POJ 1664 蘋果放盤子
5.排序 Sorting
5.1 十種基本的排序算法
5.2 快速排序的優化1— 快速排序細節優化2
5.3 練習
- POJ 1007 DNA排序
- POJ 1804 求解逆序數
- 尋找數組內第K大的元素
- 大小寫字母數字分離
6.二分查找 Binary Search
6.1 查找給定條件的值
6.2 練習
- 求平方根
- POJ 3122 怎么吃更多的披薩
- POJ 1064 分割線纜
- POJ 2785 求4數之和為0的方案數
- LeetCode 35. 搜索插入位置(二分查找)
7. 跳表 Skip List
7.1 跳表數據結構和實現
8. 散列表 Hash Table(哈希表)
8.1 散列表結構和實現(線性探測法&拉鏈法)
8.2 Hash算法及其應用場所
8.3 練習
- POJ 1200 計算子串種類
- POJ 2785 求4數之和為0的方案數(哈希法)
- LeetCode 771. 寶石與石頭(哈希)
- LeetCode 535. TinyURL 的加密與解密(哈希)
9. 二叉樹 Binary Tree
9.1 二叉樹及其遍歷
9.2 二叉查找樹
9.3 紅黑樹
9.4 堆
9.5 線段樹(Segment Tree)
9.6 樹狀數組
9.7 并查集(Disjoint-Set)
9.x 練習
- POJ 1577 給定葉子節點求二叉查找樹
- POJ 2255 Tree Recovery(已知前序&中序,求后序)
- LeetCode 1008. 先序遍歷構造二叉樹(已知先序,求二叉搜索樹)
- POJ 2388 Who’s in the Middle(求中位數)
- POJ 1442 Black Box(大小堆,求第K小的元素)
- LeetCode 230. 二叉搜索樹中第K小的元素(中序遍歷)
- LeetCode 173. 二叉搜索樹迭代器(中序遍歷)
- LeetCode 144. 二叉樹的前序遍歷(前序遍歷)
- LeetCode 94. 二叉樹的中序遍歷(中序遍歷)
- LeetCode 145. 二叉樹的后序遍歷(后序遍歷&總結)
- LeetCode 671. 二叉樹中第二小的節點
- LeetCode 257. 二叉樹的所有路徑(DFS)
- LeetCode 617. 合并二叉樹
10. 圖 Graph
10.1 圖的存儲及其BFS/DFS搜索
10.2 最小生成樹
10.3 拓撲排序
10.4 最短路徑算法 Shortest Path
10.x 練習
- 尋找社交網絡n度好友
- 農夫過河問題
11. 字符串匹配 string matching
11.1 BF & RK算法
11.2 BM算法
11.3 KMP算法
11.4 Trie樹算法
11.5 AC自動機算法
11.x 練習
- POJ 1936 字符匹配(暴力匹配)
- POJ 3690 找星座(二維匹配)
- POJ 3461 字符串匹配
12. 貪心算法 Greedy Algorithm
12.1 找零錢、區間覆蓋、霍夫曼編碼
12.x 練習
- POJ 2453 二進制數字問題
- POJ 2287 田忌賽馬問題
- 汽車加油次數問題
13. 分治算法 Divide & Conquer
13.1 分治算法介紹
13.x 練習
- POJ 1804 歸并求逆序數
- 最近點對問題 & POJ 3714
- 萬里挑一 找假硬幣
14. 回溯算法 Backtracking
14.1 簡介 & 八皇后問題
14.2 回溯應用-- 0-1背包問題
14.x 練習
- POJ 1753 Flip Game
- POJ 1321 棋盤問題
- POJ 2965 開冰箱的門
- LeetCode 17. 電話號碼的字母組合(回溯)
- LeetCode 113. 路徑總和 II(回溯)
15. 動態規劃算法 Dynamic Programming
15.1 0-1背包問題(DP解法)
15.2 動態規劃理論學習
15.3 搜索引擎拼寫糾錯
15.x 練習
- 雙11購物湊單
- “楊輝三角”最短路徑
- 動態規劃應用–找零錢
- POJ 1276 ATM湊錢(動態規劃)
- 動態規劃應用–最長遞增子序列
- LeetCode 53. 最大子序和(動態規劃)
- LeetCode 70. 爬樓梯
16. 高級篇
16.1 數據結構–位圖 BitMap
16.2 樸素貝葉斯算法過濾垃圾短信
16.3 向量空間 Vector Space – 推薦系統
16.4 B+樹 – MySQL數據庫索引
16.5 A*搜索算法–游戲尋路
16.6 索引 Index – 快速查找數據
16.7 并行算法 Parallel Algorithm – 提高執行效率
17. 實戰篇
17.1 Redis常用數據類型的數據結構
17.2 搜索引擎背后的數據結構和算法
17.3 短網址系統
17.4 如何選擇數據結構和算法
18.練習題
18.1 LeetCode 15. 三數之和
18.2 LeetCode 169. 求眾數
18.3 LeetCode 41. 缺失的第一個正數
18.4 LeetCode 141. 環形鏈表
18.5 LeetCode 23. 合并K個排序鏈表
18.6 LeetCode 20. 有效的括號(棧)
18.7 LeetCode 32. 最長有效括號(棧&DP)
18.8 LeetCode 150. 逆波蘭表達式求值(棧)
18.9 LeetCode 641. 設計循環雙端隊列
18.10 LeetCode 239. 滑動窗口最大值(雙端隊列)
18.11 LeetCode 151. 翻轉字符串里的單詞(棧)
18.12 LeetCode 226. 翻轉二叉樹(DFS\BFS)
18.13 LeetCode 104. 二叉樹的最大深度
18.14 LeetCode 111. 二叉樹的最小深度
18.15 LeetCode 102. 二叉樹的層次遍歷
18.16 LeetCode 98. 驗證二叉搜索樹
18.17 LeetCode 112. 路徑總和
18.18 LeetCode 200. 島嶼數量(圖的遍歷)
18.19 LeetCode 36. 有效的數獨(哈希)
18.20 LeetCode 322. 零錢兌換(DP)
18.21 LeetCode 152. 乘積最大子序列(DP)
18.22 LeetCode 64. 最小路徑和(DP)
18.23 LeetCode 121. 買賣股票的最佳時機
18.24 LeetCode 221. 最大正方形(DP)
18.25 LeetCode 88. 合并兩個有序數組
18.26 LeetCode 21. 合并兩個有序鏈表(單鏈表)
18.27 LeetCode 977. 有序數組的平方
18.28 LeetCode 986. 區間列表的交集
18.29 LeetCode 56. 合并區間(優先隊列)
18.30 LeetCode 46. 全排列(回溯)
18.31 LeetCode 47. 全排列 II(回溯+搜索剪枝)
18.32 LeetCode 122. 買賣股票的最佳時機 II
18.33 LeetCode 142. 環形鏈表 II(鏈表環的檢測)
18.34 LeetCode 287. 尋找重復數(BitMap)
18.35 LeetCode 268. 缺失數字
18.36 LeetCode 136. 只出現一次的數字(異或^)
18.37 LeetCode 645. 錯誤的集合
18.38 LeetCode 62. 不同路徑(DP)
18.39 LeetCode 78. 子集(回溯)
18.40 LeetCode 90. 子集 II(回溯+剪枝)
18.41 LeetCode 9. 回文數
18.42 LeetCode 160. 相交鏈表
18.43 LeetCode 89. 格雷編碼
18.44 LeetCode 124. 二叉樹中的最大路徑和
18.45 LeetCode 237. 刪除鏈表中的節點
18.46 LeetCode 206. 反轉鏈表
18.47 LeetCode 146. LRU緩存機制(哈希鏈表)
18.48 LeetCode 292. Nim 游戲
18.49 LeetCode 155. 最小棧
18.50 LeetCode 61. 旋轉鏈表
18.51 LeetCode 59. 螺旋矩陣 II
18.52 LeetCode 238. 除自身以外數組的乘積
總結
以上是生活随笔為你收集整理的《数据结构与算法之美》学习汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 2055. 蜡烛之间的
- 下一篇: LeetCode 1868. 两个行程编