极客时间_算法训练营(代码实现汇总)
I really wanna stop,but I just gotta taste for it.
目錄標題
- 第01課丨數據結構與算法總覽
- 1). 數據結構腦圖
- 2). 自己畫的腦圖:(感覺有些凌亂,之后會逐步進行補充,完善,整理)
- 3). 其中的一些分支,之前有畫一些小型分類的腦圖:
- 第02課丨訓練準備和復雜度分析
- 如何理解算法時間復雜度的表示法
- 第03課丨數組、鏈表、跳表
- 數組:
- 鏈表:
- 第04課丨棧、隊列、優先隊列、雙端隊列
- 第05課丨哈希表、映射、集合
- 第06課丨樹、二叉樹、二叉搜索樹
- 第07課丨泛型遞歸、樹的遞歸
- 第08課丨分治、回溯
- 第09課丨深度優先搜索和廣度優先搜索
- 第10課丨貪心算法
- 第11課丨二分查找
- 第12課丨動態規劃(重點!!!!!!!!!)
- 第13課丨字典樹和并查集
- 第14課丨高級搜索
- 第15課丨紅黑樹和AVL樹
- 第16課丨位運算
- 第17課丨布隆過濾器和LRU緩存
- 第18課丨排序算法
- 第19課丨高級動態規劃
- 第20課丨字符串算法
對極客大學算法訓練營的題目做一個分類,方便后續查看。
第01課丨數據結構與算法總覽
1). 數據結構腦圖
數據結構和算法腦圖
2). 自己畫的腦圖:(感覺有些凌亂,之后會逐步進行補充,完善,整理)
鏈接:數據結構和算法腦圖.note
3). 其中的一些分支,之前有畫一些小型分類的腦圖:
數據結構基礎腦圖:數據結構基礎腦圖.note
樹 的 腦圖:樹的腦圖.note
排序算法腦圖:排序算法腦圖.note
第02課丨訓練準備和復雜度分析
如何理解算法時間復雜度的表示法
?如何理解算法時間復雜度的表示法
第03課丨數組、鏈表、跳表
數組:
簡單:
LeetCode - 1.兩數之和(暴力,哈希)2
LeetCode - 66. 加一(數學、數組)
中等:
LeetCode - 11. 盛最多水的容器 2
鏈表:
第04課丨棧、隊列、優先隊列、雙端隊列
簡單:
LeetCode - 20.有效的括號(棧) 1
LeetCode - 155.最小棧
LeetCode - 劍指 Offer 59 - I. 滑動窗口的最大值(雙端隊列)
LeetCode -844. 比較含退格的字符串(棧、雙指針)
第05課丨哈希表、映射、集合
簡單:
LeetCode - 1.兩數之和(暴力,哈希)2
LeetCode - 202. 快樂數(快慢指針、哈希表)——快慢指針、判斷鏈表是否有環
LeetCode - 169.多數元素(哈希表、分治)【map的幾種遍歷方式】
LeetCode - 242.有效的字母異位詞(邏輯暴力,排序,哈希) 3
LeetCode - 1160.拼寫單詞(哈希表)
LeetCode - 1207. 獨一無二的出現次數(哈希表)
LeetCode - 1365. 有多少小于當前數字的數字(哈希表、排序)
中等:
LeetCode - 15. 三數之和 2
LeetCode - 49. 字母異位詞分組(哈希)2
LeetCode - 36. 有效的數獨(哈希表)
第06課丨樹、二叉樹、二叉搜索樹
LeetCode - 94、144、145. 二叉樹的前、中、后序遍歷(不咋會,需要多看)重點!!
LeetCode - 589. N叉樹的前序遍歷、后序遍歷、層序遍歷(遞歸、迭代)
LeetCode - 235. 二叉搜索樹的最近公共祖先(樹的遍歷,一次遍歷、兩次遍歷)
LeetCode - 236. 二叉樹的最近公共祖先(樹的遍歷)
第07課丨泛型遞歸、樹的遞歸
…
簡單:
LeetCode - 70. 爬樓梯(人肉遞歸、動態規劃)2
LeetCode - 104.二叉樹的最大深度(遞歸)1 (需要補充迭代的代碼)
LeetCode - 111.二叉樹的最小深度(遞歸)1 (需要補充迭代的代碼)
LeetCode - 226.翻轉二叉樹(迭代、遞歸)2
中等:
LeetCode - 22. 括號的生成(遞歸)1
LeetCode - 98. 驗證二叉搜索樹(迭代、遞歸)2
-
236. 二叉樹的最近公共祖先
-
105. 從前序與中序遍歷序列構造二叉樹
-
77. 組合
-
46. 全排列
-
47. 全排列 ii
困難:
- 297. 二叉樹的序列化與反序列化
第08課丨分治、回溯
LeetCode - 50. Pow(x,n) 計算 x 的 n 次冪函數(遞歸,分治的思想)
LeetCode - 78. 子集(迭代、遞歸)
LeetCode 17. 電話號碼的字母組合(回溯、遞歸)
LeetCode - 37. 解數獨(回溯法)
LeetCode - 51. N 皇后(回溯法)
第09課丨深度優先搜索和廣度優先搜索
中等:
LeetCode 102. 二叉樹的層序遍歷(廣度優先遍歷BFS)
Leetcode - 515. 在每個樹行中找最大值 (BFS、DFS)
-
433. 最小基因變化
-
22. 括號生成
-
200. 島嶼數量
-
127. 單詞接龍
第10課丨貪心算法
簡單:
LeetCode - 455. 分發餅干(貪心 + 雙指針)
LeetCode - 122. 買賣股票的最佳時機II(貪心算法、數組、動態規劃)
860. 檸檬水找零
874. 模擬行走機器人
中等:
LeetCode - 55. 跳躍游戲(貪心)
困難:
45. 跳躍游戲 II
第11課丨二分查找
簡單:
LeetCode - 69. x 的平方根(二分查找、牛頓法)
LeetCode - 367. 有效的完全平方數(二分查找、牛頓法)
中等:
LeetCode - 74. 搜索二維矩陣(二分法)
LeetCode - 33. 搜索旋轉排序數組(暴力、二分)
- 153. 尋找旋轉排序數組中的最小值
第12課丨動態規劃(重點!!!!!!!!!)
中等:
LeetCode - 53. 最大子序和(分治、動態規劃)---- 題解 python
LeetCode - 62. 不同路徑 (動態規劃、遞歸、自底向上)
LeetCode - 63. 不同路徑II(動態規劃、遞歸)
LeetCode - 70. 爬樓梯(人肉遞歸、動態規劃)2
LeetCode - 120. 三角形最小路徑和(動態規劃、遞歸、記憶搜索)
LeetCode - 152. 乘積最大子數組(動態規劃)
LeetCode - 322. 零錢兌換(遞歸、記憶化搜索、動態規劃、廣度優先)
LeetCode - 1143. 最長公共子序列(動態規劃)
LeetCode - 面試題 01.05. 一次編輯(動態規劃)
實戰題目
LeetCode - 198. 打家劫舍(動態規劃)——(程序員面試金典 - 面試題 17.16. 按摩師)
-
213. 打家劫舍 II
-
121. 買賣股票的最佳時機
-
122. 買賣股票的最佳時機 II
-
123. 買賣股票的最佳時機 III
-
309. 最佳買賣股票時機含冷凍期
-
188. 買賣股票的最佳時機 IV
-
714. 買賣股票的最佳時機含手續費
高級 DP 實戰題目
-
279. 完全平方數
-
72. 編輯距離?(重點)
-
55. 跳躍游戲
-
45. 跳躍游戲 II
-
62. 不同路徑
-
63. 不同路徑II
-
980. 不同路徑 III
-
322. 零錢兌換
-
518. 零錢兌換 II
-
32. 最長有效括號
-
64. 最小路徑和
-
72. 編輯距離
-
91. 解碼方法
-
221. 最大正方形
-
363. 矩形區域不超過 K 的最大數值和
-
403. 青蛙過河
-
410. 分割數組的最大值
-
552. 學生出勤記錄 II
-
621. 任務調度器
-
647. 回文子串
-
76. 最小覆蓋子串
-
312. 戳氣球
第13課丨字典樹和并查集
字典樹:
LeetCode - 208. 實現 Trie (前綴樹)(字典樹)
- 212. 單詞搜索 II
并查集:
- LeetCode - 547. 朋友圈(并查集、深度優先遍歷)
- 200. 島嶼數量
- 130. 被圍繞的區域
第14課丨高級搜索
【極客大學-算法訓練營】高級搜索:剪枝、雙向BFS、啟發式搜索(A*)
剪枝:
? 70. 爬樓梯
? 22. 括號生成
? 51. N 皇后
? 36. 有效的數獨
? 37. 解數獨
雙向BFS:
? 127. 單詞接龍
? 433. 最小基因變化
啟發式搜索(A*):
? 1091. 二進制矩陣中的最短路徑
? 773. 滑動謎題
? 37. 解數獨
第15課丨紅黑樹和AVL樹
AVL和紅黑樹的一些概念
第16課丨位運算
LeetCode - 按標簽分類刷題(位運算題解)
- 191. 位1的個數
- 231. 2的冪
- 190. 顛倒二進制位
- 51. N 皇后
- 52. N 皇后II
- 338. 比特位計數
第17課丨布隆過濾器和LRU緩存
布隆過濾器和LRU Cache的一些概念
LeetCode - 146. LRU 緩存機制(不會,重點!!!!)
第18課丨排序算法
-
1122. 數組的相對排序
-
242. 有效的字母異位詞
-
LeetCode - 56. 合并區間(排序算法)
-
LeetCode - 493. 翻轉對(歸并排序)
第19課丨高級動態規劃
第20課丨字符串算法
可參考鏈接:【莊小炎】字符串算法
字符串基礎問題
- 709. 轉換成小寫字母
- 58. 最后一個單詞的長度
- 771. 寶石與石頭
- 387. 字符串中的第一個唯一字符
- 8. 字符串轉換整數 (atoi)
題解: LeetCode - 字符串基礎問題(另附以上題目解析)
字符串操作問題
- 14. 最長公共前綴
- 344. 反轉字符串
- 541. 反轉字符串 II
- 151. 翻轉字符串里的單詞
- 557. 反轉字符串中的單詞 III
- 917. 僅僅反轉字母
題解:LeetCode - 字符串操作問題(另附以上題目解析)
異位詞問題
- 242. 有效的字母異位
- 49. 字母異位詞分組
- 438.找到字符串中所有字母異位詞
LeetCode - 異位詞問題(另附以上題目解析)
回文串問題
- 125. 驗證回文串
- 680. 驗證回文字符串 Ⅱ
- 5. 最長回文子串
LeetCode - 回文串問題(另附以上題目解析)
最長子串、子序列問題
- 1143. 最長公共子序列
- 72. 編輯距離
- 5. 最長回文子串
字符串 +DP 問題
- 10. 正則表達式匹配
- 44. 通配符匹配
- 115. 不同的子序列
字符串課后作業:
- https://leetcode-cn.com/problems/first-unique-character-in-a-string/
- https://leetcode-cn.com/problems/string-to-integer-atoi/
- https://leetcode-cn.com/problems/reverse-string-ii/
- https://leetcode-cn.com/problems/reverse-words-in-a-string/
- https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/
- https://leetcode-cn.com/problems/reverse-only-letters/
- https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/
- https://leetcode-cn.com/problems/longest-palindromic-substring/
- https://leetcode-cn.com/problems/isomorphic-strings/
- https://leetcode-cn.com/problems/valid-palindrome-ii/
- https://leetcode-cn.com/problems/wildcard-matching
- https://leetcode-cn.com/problems/longest-valid-parentheses
- https://leetcode-cn.com/problems/distinct-subsequences/
總結
以上是生活随笔為你收集整理的极客时间_算法训练营(代码实现汇总)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php面试编程题_PHP程序员面试题(经
- 下一篇: StreamSets实战之路(十五)-实