LeetCode Hot 100
LeetCode最经典的100道题,涵盖所有重要算法和数据结构,是面试必刷题单。
📌 题单说明
Hot 100是LeetCode官方精选的100道高频面试题,特点:
- 覆盖面广:涵盖所有主要算法和数据结构
- 难度适中:大部分为中等难度,适合进阶学习
- 面试高频:这些题在各大公司面试中频繁出现
- 题目经典:每道题都是该类型的代表题目
🎯 完整题单(按主题复盘)
分类说明
下面按主题组织复盘,部分题目可能同时属于多个专题;如果要严格按官方顺序刷题,以官方题单页面为准。
数组专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 1 | 两数之和 | 🟢 | 哈希表 | ⭐⭐⭐ |
| 11 | 盛最多水的容器 | 🟠 | 双指针 | ⭐⭐⭐ |
| 15 | 三数之和 | 🟠 | 双指针+去重 | ⭐⭐⭐ |
| 31 | 下一个排列 | 🟠 | 数组操作 | ⭐⭐ |
| 33 | 搜索旋转排序数组 | 🟠 | 二分查找 | ⭐⭐⭐ |
| 34 | 在排序数组中查找元素的第一个和最后一个位置 | 🟠 | 二分查找 | ⭐⭐ |
| 39 | 组合总和 | 🟠 | 回溯 | ⭐⭐ |
| 42 | 接雨水 | 🔴 | 双指针/单调栈 | ⭐⭐⭐ |
| 48 | 旋转图像 | 🟠 | 矩阵操作 | ⭐⭐ |
| 53 | 最大子数组和 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 56 | 合并区间 | 🟠 | 排序+贪心 | ⭐⭐⭐ |
| 75 | 颜色分类 | 🟠 | 三指针 | ⭐⭐ |
| 128 | 最长连续序列 | 🟠 | 哈希表 | ⭐⭐⭐ |
| 136 | 只出现一次的数字 | 🟢 | 位运算 | ⭐⭐ |
| 152 | 乘积最大子数组 | 🟠 | 动态规划 | ⭐⭐ |
| 215 | 数组中的第K个最大元素 | 🟠 | 快速选择/堆 | ⭐⭐⭐ |
| 238 | 除自身以外数组的乘积 | 🟠 | 前缀积 | ⭐⭐⭐ |
| 283 | 移动零 | 🟢 | 双指针 | ⭐⭐ |
| 287 | 寻找重复数 | 🟠 | 快慢指针 | ⭐⭐ |
| 406 | 根据身高重建队列 | 🟠 | 贪心 | ⭐⭐ |
链表专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 2 | 两数相加 | 🟠 | 链表遍历 | ⭐⭐⭐ |
| 19 | 删除链表的倒数第N个结点 | 🟠 | 快慢指针 | ⭐⭐⭐ |
| 21 | 合并两个有序链表 | 🟢 | 双指针 | ⭐⭐⭐ |
| 23 | 合并K个升序链表 | 🔴 | 堆/分治 | ⭐⭐⭐ |
| 24 | 两两交换链表中的节点 | 🟠 | 链表操作 | ⭐⭐ |
| 25 | K个一组翻转链表 | 🔴 | 链表反转 | ⭐⭐⭐ |
| 141 | 环形链表 | 🟢 | 快慢指针 | ⭐⭐⭐ |
| 142 | 环形链表II | 🟠 | 快慢指针 | ⭐⭐⭐ |
| 160 | 相交链表 | 🟢 | 双指针 | ⭐⭐⭐ |
| 206 | 反转链表 | 🟢 | 迭代/递归 | ⭐⭐⭐ |
字符串专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 3 | 无重复字符的最长子串 | 🟠 | 滑动窗口 | ⭐⭐⭐ |
| 5 | 最长回文子串 | 🟠 | 动态规划/中心扩展 | ⭐⭐⭐ |
| 17 | 电话号码的字母组合 | 🟠 | 回溯 | ⭐⭐⭐ |
| 20 | 有效的括号 | 🟢 | 栈 | ⭐⭐⭐ |
| 22 | 括号生成 | 🟠 | 回溯 | ⭐⭐⭐ |
| 49 | 字母异位词分组 | 🟠 | 哈希表 | ⭐⭐⭐ |
| 76 | 最小覆盖子串 | 🔴 | 滑动窗口 | ⭐⭐⭐ |
| 139 | 单词拆分 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 647 | 回文子串 | 🟠 | 动态规划/中心扩展 | ⭐⭐ |
| 739 | 每日温度 | 🟠 | 单调栈 | ⭐⭐⭐ |
树专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 94 | 二叉树的中序遍历 | 🟢 | 递归/迭代 | ⭐⭐⭐ |
| 98 | 验证二叉搜索树 | 🟠 | 中序遍历 | ⭐⭐⭐ |
| 101 | 对称二叉树 | 🟢 | 递归/迭代 | ⭐⭐⭐ |
| 102 | 二叉树的层序遍历 | 🟠 | BFS | ⭐⭐⭐ |
| 104 | 二叉树的最大深度 | 🟢 | 递归/BFS | ⭐⭐⭐ |
| 105 | 从前序与中序遍历序列构造二叉树 | 🟠 | 递归 | ⭐⭐⭐ |
| 114 | 二叉树展开为链表 | 🟠 | 递归/迭代 | ⭐⭐ |
| 124 | 二叉树中的最大路径和 | 🔴 | DFS | ⭐⭐⭐ |
| 226 | 翻转二叉树 | 🟢 | 递归 | ⭐⭐⭐ |
| 230 | 二叉搜索树中第K小的元素 | 🟠 | 中序遍历 | ⭐⭐⭐ |
| 236 | 二叉树的最近公共祖先 | 🟠 | 递归 | ⭐⭐⭐ |
| 297 | 二叉树的序列化与反序列化 | 🔴 | BFS/DFS | ⭐⭐⭐ |
| 543 | 二叉树的直径 | 🟢 | DFS | ⭐⭐⭐ |
| 617 | 合并二叉树 | 🟢 | DFS | ⭐⭐ |
图与综合数据结构专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 155 | 最小栈 | 🟠 | 辅助栈 | ⭐⭐⭐ |
| 200 | 岛屿数量 | 🟠 | DFS/BFS | ⭐⭐⭐ |
| 207 | 课程表 | 🟠 | 拓扑排序 | ⭐⭐⭐ |
| 208 | 实现Trie | 🟠 | Trie树 | ⭐⭐⭐ |
| 234 | 回文链表 | 🟢 | 快慢指针+反转 | ⭐⭐⭐ |
| 279 | 完全平方数 | 🟠 | 动态规划/BFS | ⭐⭐ |
| 301 | 删除无效的括号 | 🔴 | BFS/DFS | ⭐⭐ |
| 338 | 比特位计数 | 🟠 | 动态规划/位运算 | ⭐⭐ |
| 394 | 字符串解码 | 🟠 | 栈 | ⭐⭐⭐ |
动态规划专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 5 | 最长回文子串 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 53 | 最大子数组和 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 62 | 不同路径 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 64 | 最小路径和 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 70 | 爬楼梯 | 🟢 | 动态规划 | ⭐⭐⭐ |
| 72 | 编辑距离 | 🔴 | 动态规划 | ⭐⭐⭐ |
| 96 | 不同的二叉搜索树 | 🟠 | 动态规划 | ⭐⭐ |
| 121 | 买卖股票的最佳时机 | 🟢 | 动态规划 | ⭐⭐⭐ |
| 139 | 单词拆分 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 152 | 乘积最大子数组 | 🟠 | 动态规划 | ⭐⭐ |
| 198 | 打家劫舍 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 221 | 最大正方形 | 🟠 | 动态规划 | ⭐⭐ |
| 279 | 完全平方数 | 🟠 | 动态规划 | ⭐⭐ |
| 300 | 最长递增子序列 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 309 | 最佳买卖股票时机含冷冻期 | 🟠 | 动态规划 | ⭐⭐ |
| 312 | 戳气球 | 🔴 | 区间DP | ⭐⭐⭐ |
| 322 | 零钱兑换 | 🟠 | 动态规划 | ⭐⭐⭐ |
| 416 | 分割等和子集 | 🟠 | 0-1背包 | ⭐⭐⭐ |
| 438 | 找到字符串中所有字母异位词 | 🟠 | 滑动窗口 | ⭐⭐⭐ |
| 494 | 目标和 | 🟠 | 0-1背包 | ⭐⭐⭐ |
| 560 | 和为K的子数组 | 🟠 | 前缀和+哈希 | ⭐⭐⭐ |
其他专题
| 题号 | 题目 | 难度 | 核心算法 | 推荐度 |
|---|---|---|---|---|
| 4 | 寻找两个正序数组的中位数 | 🔴 | 二分查找 | ⭐⭐⭐ |
| 46 | 全排列 | 🟠 | 回溯 | ⭐⭐⭐ |
| 78 | 子集 | 🟠 | 回溯 | ⭐⭐⭐ |
| 84 | 柱状图中最大的矩形 | 🔴 | 单调栈 | ⭐⭐⭐ |
| 85 | 最大矩形 | 🔴 | 单调栈+DP | ⭐⭐ |
| 169 | 多数元素 | 🟢 | 摩尔投票 | ⭐⭐⭐ |
| 239 | 滑动窗口最大值 | 🔴 | 单调队列 | ⭐⭐⭐ |
| 295 | 数据流的中位数 | 🔴 | 双堆 | ⭐⭐⭐ |
| 347 | 前K个高频元素 | 🟠 | 哈希表+堆 | ⭐⭐⭐ |
| 448 | 找到所有数组中消失的数字 | 🟢 | 原地哈希 | ⭐⭐ |
| 461 | 汉明距离 | 🟢 | 位运算 | ⭐⭐ |
| 581 | 最短无序连续子数组 | 🟠 | 双指针 | ⭐⭐ |
📖 刷题建议
第一轮:基础巩固(4周)
Week 1-2: 简单题(20题)
- 目标:熟悉基本语法和数据结构操作
- 每天3-4题
- 重点题目:1, 20, 21, 104, 136, 169, 206, 226
Week 3-4: 中等题基础(30题)
- 目标:掌握基本算法思想
- 每天2-3题
- 重点题目:2, 15, 102, 198, 300, 322
第二轮:专题提升(6周)
Week 5-6: 动态规划专题(20题)
- 线性DP:53, 70, 198, 300
- 背包DP:322, 416, 494
- 二维DP:62, 64, 72
Week 7-8: 树专题(25题)
- 遍历:94, 102, 144, 145
- BST:98, 230
- 递归:101, 104, 124, 236
Week 9-10: 数组与字符串(20题)
- 双指针:11, 15, 283
- 滑动窗口:3, 76, 438
- 前缀和:560
第三轮:困难题挑战(4周)
Week 11-14: 困难题(15题)
- 每天1题
- 重点题目:4, 23, 25, 42, 72, 76, 84, 124, 239, 295, 297, 312
第四轮:复习与巩固(2周)
- 回顾错题
- 一题多解
- 总结模板
💡 刷题技巧
1. 分类刷题
不要按题号顺序刷,按算法分类集中突破:
- 同类题目一起刷,容易找到规律
- 每个专题至少刷10题才能掌握
2. 一题多解
重要的题目要尝试多种解法:
- 暴力解 → 优化解 → 最优解
- 例如:两数之和(哈希表vs双指针)
3. 定期复习
- 第1次做完后,1天后再做
- 第2次做完后,3天后再做
- 第3次做完后,7天后再做
- 第4次做完后,15天后再做
4. 总结模板
为每种算法总结代码模板:
- 双指针模板
- 回溯模板
- 动态规划模板
- 二分查找模板
📊 进度追踪
按难度统计
- 🟢 简单:20题(20%)
- 🟠 中等:65题(65%)
- 🔴 困难:15题(15%)
按算法统计
- 动态规划:重点复盘
- 树:重点复盘
- 数组:重点复盘
- 链表:重点复盘
- 字符串:重点复盘
- 图与综合数据结构:重点复盘
- 其他:补充复盘
推荐度分布
- ⭐⭐⭐ 必做:60题
- ⭐⭐ 重要:30题
- ⭐ 可选:10题
🎓 学习资源
在线资源
推荐书籍
- 《剑指Offer》
- 《程序员代码面试指南》
返回:LeetCode题解