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两两交换链表中的节点🟠链表操作⭐⭐
25K个一组翻转链表🔴链表反转⭐⭐⭐
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题解