ACM金牌選手整理的【LeetCode刷題順序】
- 2021 年 7 月 10 日
- 筆記
- JAVA, leetcode, 演算法, 面試, 筆試

演算法和數據結構知識點圖
首先,了解演算法和數據結構有哪些知識點,在後面的學習中有 大局觀,對學習和刷題十分有幫助。
下面是我花了一天時間花的演算法和數據結構的知識結構,大家可以看看。

後面是為大家 精心挑選的LeetCode題單,並根據題目知識點的類型分好了類別,大家可以根據每個知識點,進行有針對性的刷題。
數據結構
數組&雙指針
-
LeetCode 1. 兩數之和
-
LeetCode 4. 尋找兩個正序數組的中位數
-
LeetCode 15. 三數之和
-
LeetCode 75. 顏色分類
-
LeetCode 76. 最小覆蓋子串
-
LeetCode 142. 環形鏈表 II
-
LeetCode 234. 迴文鏈表
-
LeetCode 283. 移動零
鏈表
-
LeetCode 19. 刪除鏈表的倒數第 N 個結點
-
LeetCode 148. 排序鏈表
-
LeetCode 160. 相交鏈表
-
LeetCode 206. 反轉鏈表
隊列&棧
-
LeetCode 20. 有效的括弧
-
LeetCode 21. 合併兩個有序鏈表
-
LeetCode 84. 柱狀圖中最大的矩形
-
LeetCode 85. 最大矩形
-
LeetCode 155. 最小棧
-
LeetCode 239. 滑動窗口最大值
-
LeetCode 394. 字元串解碼
-
LeetCode 739. 每日溫度
-
LeetCode 3. 無重複字元的最長子串
哈希表
-
LeetCode 49. 字母異位詞分組
-
128. 最長連續序列
-
LeetCode 141. 環形鏈表
-
LeetCode 146. LRU 快取機制
-
LeetCode 560. 和為K的子數組
二叉樹
-
LeetCode 94. 二叉樹的中序遍歷
-
101. 對稱二叉樹
-
102. 二叉樹的層序遍歷
-
LeetCode 104. 二叉樹的最大深度
-
LeetCode 105. 從前序與中序遍歷序列構造二叉樹
-
LeetCode 114. 二叉樹展開為鏈表
-
LeetCode 543. 二叉樹的直徑
二叉搜索樹
- LeetCode 96. 不同的二叉搜索樹
- LeetCode 98. 驗證二叉搜索樹
演算法
模擬
- LeetCode 48. 旋轉影像
貪心
- LeetCode 11. 盛最多水的容器
- LeetCode 714. 買賣股票的最佳時機含手續費
- LeetCode 122. 買賣股票的最佳時機 II
- LeetCode 55. 跳躍遊戲
- LeetCode 309. 最佳買賣股票時機含冷凍期
- LeetCode 406. 根據身高重建隊列
二分
- LeetCode 33. 搜索旋轉排序數組
- LeetCode 34. 在排序數組中查找元素的第一個和最後一個位置
遞歸&回溯
-
LeetCode 17. 電話號碼的字母組合
-
LeetCode 22. 括弧生成
-
LeetCode 39. 組合總和
-
LeetCode 46. 全排列
-
LeetCode 78. 子集
-
LeetCode 79. 單詞搜索
-
LeetCode 226. 翻轉二叉樹
深度優先搜索DFS
-
LeetCode 236. 二叉樹的最近公共祖先
-
LeetCode 301. 刪除無效的括弧
寬度優先搜索BFS
-
LeetCode 200. 島嶼數量
-
LeetCode 617. 合併二叉樹
分治
- LeetCode 53. 最大子序和
排序演算法
-
LeetCode 56. 合併區間
-
LeetCode 215. 數組中的第K個最大元素
-
LeetCode 347. 前 K 個高頻元素
Manacher演算法
-
LeetCode 5. 最長迴文子串
-
LeetCode 647. 迴文子串
字典樹Trie
-
LeetCode 139. 單詞拆分
-
LeetCode 208. 實現 Trie (前綴樹)
動態規劃
-
LeetCode 10. 正則表達式匹配
-
LeetCode 32. 最長有效括弧
-
LeetCode 42. 接雨水
-
LeetCode 62. 不同路徑
-
LeetCode 64. 最小路徑和
-
LeetCode 70. 爬樓梯
-
LeetCode 72. 編輯距離
-
LeetCode 139. 單詞拆分
-
LeetCode 152. 乘積最大子數組
-
LeetCode 198. 打家劫舍
-
LeetCode 221. 最大正方形
-
LeetCode 300. 最長遞增子序列
-
LeetCode 337. 打家劫舍 III
-
LeetCode 416. 分割等和子集
-
LeetCode 494. 目標和
最短路演算法
- LeetCode 743. 網路延遲時間
最小生成樹
- 1584. 連接所有點的最小費用
拓撲排序
- LeetCode 207. 課程表
並查集
- LeetCode 399. 除法求值
還在不斷完善中。
我把學習 演算法和數據結構和電腦核心的書籍 都下面整理好了獲取,在學習電腦的路上肯定能用到,身邊的同學都在看。
書單
//mp.weixin.qq.com/s/vtIjAQQdEik2A7NCIamSqA

下面講一下如何刷題。

如何正確的做一道題
- 從簡入手: 先從簡單暴力(時間複雜度高)的方法入手。
- 優化: 思考如何在第一步的基礎上,如何優化演算法,降低時間複雜度。
- 構思程式碼: 有了以上兩步,我們此時應該已經有了一個正確的想法,此時我們應該構思程式碼,有那幾部分,每部分實現什麼功能,程式碼怎麼寫。而不是直接悶頭去寫程式碼,因為很多時候沒想清楚,直接去寫程式碼,會導致寫了一半發現思路不對,寫的程式碼都是錯誤的。
- 寫程式碼: 實現第三步程式碼。
- (Debug): 如果我們的題目沒有通過測試,應該檢查程式碼是不是有bug、思路對不對等。
- 總結與反思: 題目通過了,我們應該總結一下這道題考察的知識點、切入的角度、同類型的題目等,同時思考有沒有更優的辦法。
做到以上幾點,一道題學習的就很透了,遇到同類型的題目可以舉一反三啦。
最後
我是編程熊,字節跳動、曠視科技前員工、ACM金牌選手。
微信搜索【一隻編程熊】,獲取 學習資源、面試、內推交流群。
