LeetCode 学习路线图(186 题)

优先级图例

标记含义
🔴 重点高频必会,能手撕 + 讲复杂度
🟡 进阶中频,掌握套路即可
🟢 了解低频/专项,扫读

Top 20 高频题型(按模式)

排名题型模式常考分类
1两数之和 / 哈希 O(1) 查找数组哈希
2反转链表 / 链表交点链表
3二叉树层序 / 递归遍历二叉树
4最长子数组/子串(前缀和/滑动窗口)数组/滑窗
5二分查找(边界四种写法)二分
6回溯(子集/排列/组合)回溯
7动态规划(0/1 背包/子序列)DP
8岛屿数量(DFS/BFS/并查集)图论
9接雨水 / 柱状图最大矩形(单调栈)栈队列
10LRU 缓存(哈希+双向链表)设计题
11买卖股票系列(状态机 DP)贪心/DP
12最长回文子串(中心扩展/DP)DP
13无重复字符最长子串(滑窗)滑窗
14编辑距离(二维 DP)DP
15Trie 前缀树设计题
16最小覆盖子串(滑窗模板)滑窗
17合并 K 个有序链表(堆/分治)堆/链表
18课程表(拓扑排序/判环)图论
19快速幂(Pow(x,n))二分/数学
20SQL 排名/连续出现(窗口函数)SQL

解题方法论

  1. 先定输入输出与边界:空输入、单元素、重复、越界。

  2. 复杂度先估后写:时间/空间目标,决定用哈希/排序/DP 哪条路。

  3. 模板化套路

    • 数组哈希:用 dict 存「值→下标/计数」,把 O(n²) 降到 O(n)。

    • 双指针:相向(有序数组)/ 快慢(环检测)/ 滑动窗口(子串)。

    • 二叉树:递归三要素(终止/单层/返回值)+ 层序用队列。

    • 回溯:path + 选择列表 + 撤销 框架,注意去重。

    • DP:定义 dp[i] 含义 → 转移 → 初始化 → 遍历顺序。

    • 图:DFS/BFS/并查集三选一,判环用拓扑或颜色标记。

  4. 写完自测:拿最小样例 + 边界样例走一遍。


一、数组与哈希(含双指针、矩阵)

  • 核心:哈希 O(1) 查找、前缀和、双指针、原地交换 🔴 重点

  • 必练题型:两数之和类、三数之和(去重)、盛水容器(相向指针)、除自身乘积、轮转数组、螺旋矩阵、矩阵置零 🔴 重点

  • 进阶:最长连续序列(并查集/哈希)、和为 K 子数组(前缀和)、字母异位词分组 🟡 进阶

  • 易错:三数之和双指针去重、两数之和 II 的有序优化 🟢 了解

二、字符串

  • 核心:双指针、翻转、模拟、进制转换 🔴 重点

  • 必练题型:反转单词、验证回文串、字符串相乘、atoi、复原 IP 🔴 重点

  • 进阶:比较版本号、子序列判断 🟡 进阶

  • 易错:atoi 的溢出与符号、前导零 🟢 了解

三、栈与队列

  • 核心:单调栈、用栈/队列互实现、表达式 🔴 重点

  • 必练题型:最小栈、有效括号、用队列实现栈、字符串解码、每日温度(单调栈)、柱状图最大矩形 🔴 重点

  • 易错:单调栈维护「递增/递减」方向、弹出时机 🟡 进阶

四、链表

  • 核心:双指针(快慢)、dummy 头、递归反转 🔴 重点

  • 必练题型:反转链表、相交链表、环形链表 II(入口)、合并有序链表、排序链表(归并)、K 个一组翻转、复制随机指针链表 🔴 重点

  • 进阶:重排链表、分隔链表、两两交换 🟡 进阶

  • 易错:环入口的数学推导、反转时的指针保存 🟢 了解

五、二叉树

  • 核心:递归遍历、层序(队列)、BST 性质、构造 🔴 重点

  • 必练题型:最大深度、对称、BST 校验、最近公共祖先、层序/锯齿层序、路径总和、最大路径和、序列化反序列化、从中序前序构造 🔴 重点

  • 进阶:右视图、二叉搜索树第 K 小、二叉树剪枝 🟡 进阶

  • 易错:递归返回值的传递、构造时的区间边界 🟢 了解

六、堆

  • 核心:优先队列、Top-K、中位数维护 🔴 重点

  • 必练题型:第 K 大元素、前 K 高频元素、数据流中位数 🔴 重点

  • 易错:小顶堆取 Top-K 的取反技巧、堆大小控制 🟡 进阶

七、排序(手撕)

  • 核心:快排、归并、堆排序的手写 🔴 重点

  • 必练题型:排序数组(快排)、手撕归并、手撕堆排序 🔴 重点

  • 易错:快排 pivot 选取与边界、归并的临时数组 🟢 了解

八、二分查找

  • 核心:四种边界模板(找等于/左边界/右边界/旋转)🔴 重点

  • 必练题型:标准二分、搜索旋转排序数组、寻找峰值、查找元素区间、有序矩阵第 K 小、x 的平方根、Pow(x,n) 🔴 重点

  • 易错:mid 溢出用 l+(r-l)/2、死循环(l=mid 还是 l=mid+1)🟢 了解

九、滑动窗口

  • 核心:固定/可变窗口、收缩条件、计数数组 🔴 重点

  • 必练题型:无重复字符最长子串、最小覆盖子串、长度最小子数组、滑动窗口最大值(单调队列)、字母异位词 🔴 重点

  • 进阶:绝对差不超过限制的最长子数组、串联单词子串 🟡 进阶

  • 易错:窗口收缩的 while 条件、计数归零清理 🟢 了解

十、回溯

  • 核心:path + 选择 + 撤销 框架、去重(排序后同层跳过)🔴 重点

  • 必练题型:全排列/全排列 II、组合/组合总和、子集/子集 II、括号生成、分割回文串、单词搜索、N 皇后 🔴 重点

  • 易错:同层去重用 i>start && nums[i]==nums[i-1]、二维搜索的 visited 🟢 了解

十一、贪心

  • 核心:局部最优推导全局、排序后贪心、区间调度 🔴 重点

  • 必练题型:买卖股票系列、跳跃游戏、无重叠区间、用最少箭引爆气球、根据身高重建队列、任务调度器 🔴 重点

  • 进阶:K 距间隔重排字符串、划分字母区间 🟡 进阶

  • 易错:股票问题的状态机建模 🟢 了解

十二、图论

  • 核心:DFS/BFS、并查集、拓扑排序 🔴 重点

  • 必练题型:岛屿数量、腐烂的橘子、省份数量、课程表(拓扑判环)、冗余连接、太平洋大西洋水流、被围绕的区域 🔴 重点

  • 易错:visited 标记时机、并查集路径压缩 🟢 了解

十三、动态规划

  • 核心:状态定义 → 转移 → 初始化 → 遍历顺序 🔴 重点

  • 必练题型:爬楼梯、不同路径、最长递增子序列、最大子数组积、编辑距离、最长公共子序列、分割等和子集(0/1 背包)、最长回文子串、打家劫舍系列、单词拆分 🔴 重点

  • 进阶:股票含冷冻期、目标和、三角形最小路径、完全平方数 🟡 进阶

  • 易错:背包的「恰好/至少」初始化、LIS 的 O(n log n) 🟢 了解

十四、数学与位运算

  • 核心:异或性质、lowbit、阶乘零、快乐数 🟡 进阶

  • 必练题型:只出现一次的数字、2 的幂、阶乘后的零、快乐数、用 Rand7 实现 Rand10 🟡 进阶

  • 易错:位运算优先级、lowbit 取最低 1 🟢 了解

十五、设计题

  • 核心:数据结构组合、O(1) 操作、序列化 🔴 重点

  • 必练题型:LRU 缓存(哈希+双向链表)、实现 Trie 前缀树 🔴 重点

  • 易错:LRU 的移动到头、Trie 的指针释放 🟢 了解

十六、SQL 高频

  • 核心:窗口函数、自连接、分组排名 🟡 进阶

  • 必练题型:组合两表、第 N 高薪水、分数排名、连续出现的数字、部门工资最高员工 🟡 进阶

  • 易错:RANK/DENSE_RANK/ROW_NUMBER 区别、连续出现用自变量差值 🟢 了解


刷题顺序

  1. 数组哈希 + 字符串 + 链表(一/二/四章)。

  2. 二叉树 + 栈队列(三/五章)。

  3. 二分 + 滑窗 + 回溯(八/九/十章)。

  4. DP + 图论 + 贪心(十一/十二/十三章)。

  5. 堆 + 排序 + 设计 + 数学 + SQL(六/七/十四/十五/十六章)。

  6. 冲刺:按 Top20 题型做口述 + 白板手撕,重点练 DP 状态定义与回溯去重。

相关链接