ACM金牌選手整理的【LeetCode刷題順序】


算法和數據結構知識點圖

首先,了解算法和數據結構有哪些知識點,在后面的學習中有 大局觀,對學習和刷題十分有幫助。

下面是我花了一天時間花的算法和數據結構的知識結構,大家可以看看。

后面是為大家 精心挑選的LeetCode題單,並根據題目知識點的類型分好了類別,大家可以根據每個知識點,進行有針對性的刷題。

數據結構

數組&雙指針

  1. LeetCode 1. 兩數之和

  2. LeetCode 4. 尋找兩個正序數組的中位數

  3. LeetCode 15. 三數之和

  4. LeetCode 75. 顏色分類

  5. LeetCode 76. 最小覆蓋子串

  6. LeetCode 142. 環形鏈表 II

  7. LeetCode 234. 回文鏈表

  8. LeetCode 283. 移動零

鏈表

  1. LeetCode 19. 刪除鏈表的倒數第 N 個結點

  2. LeetCode 148. 排序鏈表

  3. LeetCode 160. 相交鏈表

  4. LeetCode 206. 反轉鏈表

隊列&棧

  1. LeetCode 20. 有效的括號

  2. LeetCode 21. 合並兩個有序鏈表

  3. LeetCode 84. 柱狀圖中最大的矩形

  4. LeetCode 85. 最大矩形

  5. LeetCode 155. 最小棧

  6. LeetCode 239. 滑動窗口最大值

  7. LeetCode 394. 字符串解碼

  8. LeetCode 739. 每日溫度

  9. LeetCode 3. 無重復字符的最長子串

哈希表

  1. LeetCode 49. 字母異位詞分組

  2. 128. 最長連續序列

  3. LeetCode 141. 環形鏈表

  4. LeetCode 146. LRU 緩存機制

  5. LeetCode 560. 和為K的子數組

二叉樹

  1. LeetCode 94. 二叉樹的中序遍歷

  2. 101. 對稱二叉樹

  3. 102. 二叉樹的層序遍歷

  4. LeetCode 104. 二叉樹的最大深度

  5. LeetCode 105. 從前序與中序遍歷序列構造二叉樹

  6. LeetCode 114. 二叉樹展開為鏈表

  7. LeetCode 543. 二叉樹的直徑

二叉搜索樹

  1. LeetCode 96. 不同的二叉搜索樹
  2. LeetCode 98. 驗證二叉搜索樹

算法

模擬

  1. LeetCode 48. 旋轉圖像

貪心

  1. LeetCode 11. 盛最多水的容器
  2. LeetCode 714. 買賣股票的最佳時機含手續費
  3. LeetCode 122. 買賣股票的最佳時機 II
  4. LeetCode 55. 跳躍游戲
  5. LeetCode 309. 最佳買賣股票時機含冷凍期
  6. LeetCode 406. 根據身高重建隊列

二分

  1. LeetCode 33. 搜索旋轉排序數組
  2. LeetCode 34. 在排序數組中查找元素的第一個和最后一個位置

遞歸&回溯

  1. LeetCode 17. 電話號碼的字母組合

  2. LeetCode 22. 括號生成

  3. LeetCode 39. 組合總和

  4. LeetCode 46. 全排列

  5. LeetCode 78. 子集

  6. LeetCode 79. 單詞搜索

  7. LeetCode 226. 翻轉二叉樹

深度優先搜索DFS

  1. LeetCode 236. 二叉樹的最近公共祖先

  2. LeetCode 301. 刪除無效的括號

寬度優先搜索BFS

  1. LeetCode 200. 島嶼數量

  2. LeetCode 617. 合並二叉樹

分治

  1. LeetCode 53. 最大子序和

排序算法

  1. LeetCode 56. 合並區間

  2. LeetCode 215. 數組中的第K個最大元素

  3. LeetCode 347. 前 K 個高頻元素

Manacher算法

  1. LeetCode 5. 最長回文子串

  2. LeetCode 647. 回文子串

字典樹Trie

  1. LeetCode 139. 單詞拆分

  2. LeetCode 208. 實現 Trie (前綴樹)

動態規划

  1. LeetCode 10. 正則表達式匹配

  2. LeetCode 32. 最長有效括號

  3. LeetCode 42. 接雨水

  4. LeetCode 62. 不同路徑

  5. LeetCode 64. 最小路徑和

  6. LeetCode 70. 爬樓梯

  7. LeetCode 72. 編輯距離

  8. LeetCode 139. 單詞拆分

  9. LeetCode 152. 乘積最大子數組

  10. LeetCode 198. 打家劫舍

  11. LeetCode 221. 最大正方形

  12. LeetCode 300. 最長遞增子序列

  13. LeetCode 337. 打家劫舍 III

  14. LeetCode 416. 分割等和子集

  15. LeetCode 494. 目標和

最短路算法

  1. LeetCode 743. 網絡延遲時間

最小生成樹

  1. 1584. 連接所有點的最小費用

拓撲排序

  1. LeetCode 207. 課程表

並查集

  1. LeetCode 399. 除法求值

還在不斷完善中。

我把學習 算法和數據結構和計算機核心的書籍 都下面整理好了獲取,在學習計算機的路上肯定能用到,身邊的同學都在看。

書單

https://mp.weixin.qq.com/s/vtIjAQQdEik2A7NCIamSqA

下面講一下如何刷題。

如何正確的做一道題

  • 從簡入手: 先從簡單暴力(時間復雜度高)的方法入手。
  • 優化: 思考如何在第一步的基礎上,如何優化算法,降低時間復雜度。
  • 構思代碼: 有了以上兩步,我們此時應該已經有了一個正確的想法,此時我們應該構思代碼,有那幾部分,每部分實現什么功能,代碼怎么寫。而不是直接悶頭去寫代碼,因為很多時候沒想清楚,直接去寫代碼,會導致寫了一半發現思路不對,寫的代碼都是錯誤的。
  • 寫代碼: 實現第三步代碼。
  • (Debug): 如果我們的題目沒有通過測試,應該檢查代碼是不是有bug、思路對不對等。
  • 總結與反思: 題目通過了,我們應該總結一下這道題考察的知識點、切入的角度、同類型的題目等,同時思考有沒有更優的辦法。

做到以上幾點,一道題學習的就很透了,遇到同類型的題目可以舉一反三啦。

最后

我是編程熊,字節跳動、曠視科技前員工、ACM金牌選手。

微信搜索【一只編程熊】,獲取 學習資源、面試、內推交流群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM