LeetCode 学习路线图(186 题)
优先级图例
| 标记 | 含义 |
|---|---|
| 🔴 重点 | 高频必会,能手撕 + 讲复杂度 |
| 🟡 进阶 | 中频,掌握套路即可 |
| 🟢 了解 | 低频/专项,扫读 |
Top 20 高频题型(按模式)
| 排名 | 题型模式 | 常考分类 |
|---|---|---|
| 1 | 两数之和 / 哈希 O(1) 查找 | 数组哈希 |
| 2 | 反转链表 / 链表交点 | 链表 |
| 3 | 二叉树层序 / 递归遍历 | 二叉树 |
| 4 | 最长子数组/子串(前缀和/滑动窗口) | 数组/滑窗 |
| 5 | 二分查找(边界四种写法) | 二分 |
| 6 | 回溯(子集/排列/组合) | 回溯 |
| 7 | 动态规划(0/1 背包/子序列) | DP |
| 8 | 岛屿数量(DFS/BFS/并查集) | 图论 |
| 9 | 接雨水 / 柱状图最大矩形(单调栈) | 栈队列 |
| 10 | LRU 缓存(哈希+双向链表) | 设计题 |
| 11 | 买卖股票系列(状态机 DP) | 贪心/DP |
| 12 | 最长回文子串(中心扩展/DP) | DP |
| 13 | 无重复字符最长子串(滑窗) | 滑窗 |
| 14 | 编辑距离(二维 DP) | DP |
| 15 | Trie 前缀树 | 设计题 |
| 16 | 最小覆盖子串(滑窗模板) | 滑窗 |
| 17 | 合并 K 个有序链表(堆/分治) | 堆/链表 |
| 18 | 课程表(拓扑排序/判环) | 图论 |
| 19 | 快速幂(Pow(x,n)) | 二分/数学 |
| 20 | SQL 排名/连续出现(窗口函数) | SQL |
解题方法论
-
先定输入输出与边界:空输入、单元素、重复、越界。
-
复杂度先估后写:时间/空间目标,决定用哈希/排序/DP 哪条路。
-
模板化套路:
-
数组哈希:用
dict存「值→下标/计数」,把 O(n²) 降到 O(n)。 -
双指针:相向(有序数组)/ 快慢(环检测)/ 滑动窗口(子串)。
-
二叉树:递归三要素(终止/单层/返回值)+ 层序用队列。
-
回溯:
path + 选择列表 + 撤销框架,注意去重。 -
DP:定义
dp[i]含义 → 转移 → 初始化 → 遍历顺序。 -
图:DFS/BFS/并查集三选一,判环用拓扑或颜色标记。
-
-
写完自测:拿最小样例 + 边界样例走一遍。
一、数组与哈希(含双指针、矩阵)
-
核心:哈希 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 区别、连续出现用自变量差值 🟢 了解
刷题顺序
-
数组哈希 + 字符串 + 链表(一/二/四章)。
-
二叉树 + 栈队列(三/五章)。
-
二分 + 滑窗 + 回溯(八/九/十章)。
-
DP + 图论 + 贪心(十一/十二/十三章)。
-
堆 + 排序 + 设计 + 数学 + SQL(六/七/十四/十五/十六章)。
-
冲刺:按 Top20 题型做口述 + 白板手撕,重点练 DP 状态定义与回溯去重。