我是怎么刷 LeetCode通过华为OD 的:高效刷题方法 + 100 道推荐题单
LeetCode优先怎么刷更高效?我自己整理的 100 道算法题推荐路线
这篇不是题海战术,而是我自己准备面试时会用的刷题路线。
核心思路很简单:先刷 LeetCode,再按题型刷;先会模板,再做二刷;先做高频题,再补难题。
🦅个人主页
🐼GitHub主页
文章目录
- LeetCode优先怎么刷更高效?我自己整理的 100 道算法题推荐路线
- 一、先说结论
- 二、为什么我推荐 LeetCode 优先
- 2.1 面试重合度高
- 2.2 题解多,适合自学
- 2.3 很适合做二刷和复盘
- 2.4 平台推荐度
- 三、我自己觉得高效的刷题方式
- 3.1 不要按“题号顺序”刷
- 3.2 每道题按 4 步走
- 3.3 每道题至少记 4 件事
- 3.4 推荐一个刷题闭环
- 3.5 三阶段刷题法
- 四、100道题推荐路线
- 4.1 基础数组 / 字符串
- 4.2 双指针 / 滑动窗口
- 4.3 链表
- 4.4 栈 / 队列 / 单调栈
- 4.5 二分查找
- 4.6 二叉树基础
- 4.7 图 / DFS / BFS / 并查集
- 4.8 动态规划
- 4.9 回溯
- 4.10 贪心 / Trie / 堆
- 五、如果时间紧,先刷哪一批
- 第一批:必须会
- 第二批:面试特别爱问
- 第三批:冲分题
- 六、我自己的建议
- 6.1 不要只刷,不复盘
- 6.2 不要只看答案,不自己重写
- 6.3 刷题要和面试强绑定
- 七、最后总结
一、先说结论
如果你现在要准备算法面试,尤其是 Java 后端、校招、社招都能用的那种,我的建议是:
LeetCode 优先题型优先100 道高频题先过一遍不会的题再做二刷
我不建议上来就无脑刷几百道,因为你会很容易陷进这几个坑:
- 刷得多,但没有形成模板
- 会做题,但不会总结
- 做过很多题,但面试时还是写不快
真正有用的不是“数量”,而是:
你是不是已经把常见题型的解法,变成了自己的反射动作。
二、为什么我推荐 LeetCode 优先
2.1 面试重合度高
很多大厂、外包、外企、OD 岗位的算法题,本质都来自这些经典题型:
- 数组
- 字符串
- 双指针
- 哈希
- 栈队列
- 二叉树
- BFS / DFS
- 动态规划
- 回溯
LeetCode 的好处就是把这些题型基本都覆盖了。
2.2 题解多,适合自学
你自己刷题的时候,最怕不是题难,而是:
- 看不懂题意
- 不知道题型归类
- 不知道为什么错
LeetCode 的优势就是题解多、讨论多、分类多,适合从“不会”慢慢磨到“会总结”。
2.3 很适合做二刷和复盘
很多平台适合练手,但 LeetCode 更适合:
- 记录题型
- 形成模板
- 做错题本
- 面试前冲刺
2.4 平台推荐度
| 平台 | 推荐度 | 适合用途 |
|---|---|---|
| LeetCode | 10 | 主刷平台,题型最完整 |
| 牛客 | 8 | 国内面经题、OD/校招题辅助 |
| AcWing | 7 | 补基础、练模板、练手感 |
三、我自己觉得高效的刷题方式
3.1 不要按“题号顺序”刷
更好的顺序是按题型:
- 数组 / 字符串
- 双指针 / 滑窗
- 链表
- 栈 / 队列
- 二分
- 树
- 图
- DP
- 回溯
- 贪心 / Trie / 堆
3.2 每道题按 4 步走
我自己的方法是:
先独立想 10-15 分钟写出最笨但正确的解看题解,补模板隔 2-3 天二刷
3.3 每道题至少记 4 件事
刷完之后不要只记“我做过”:
- 题型标签
- 核心思路
- 边界条件
- 时间复杂度
3.4 推荐一个刷题闭环
读题 -> 口述思路 -> 写最小可行解 -> 优化 -> 复盘错因 -> 二刷 -> 限时重做3.5 三阶段刷题法
| 阶段 | 目标 | 建议 |
|---|---|---|
| 第一轮 | 建模板 | 先保证常见题型都做过 |
| 第二轮 | 补短板 | 把不会的、看题解的题重新做一遍 |
| 第三轮 | 面试化 | 限时做题 + 口述思路 + 复盘 |
四、100道题推荐路线
下面这 100 道,是我自己会优先推荐的 LeetCode 题单。
不是说你必须全刷完,但如果你把这 100 道吃透,常见面试题型基本就覆盖得差不多了。
4.1 基础数组 / 字符串
Two Sum- 哈希入门,必须会Maximum Subarray- 贪心 / DP 经典题Merge Intervals- 区间题的核心模板Rotate Image- 矩阵模拟,面试高频Group Anagrams- 哈希分组思维Product of Array Except Self- 前后缀思维Move Zeroes- 双指针基础Majority Element- 投票思想Contains Duplicate- 哈希去重Subarray Sum Equals K- 前缀和高频
4.2 双指针 / 滑动窗口
3Sum- 双指针经典Container With Most Water- 双指针 + 贪心Valid Palindrome- 双指针基础Two Sum II - Input Array Is Sorted- 排序数组双指针Longest Substring Without Repeating Characters- 滑窗模板Minimum Window Substring- 滑窗进阶Sliding Window Maximum- 单调队列经典Find All Anagrams in a String- 固定窗口滑窗Permutation in String- 变形滑窗Fruit Into Baskets- 滑窗综合题
4.3 链表
Add Two Numbers- 链表基础Merge Two Sorted Lists- 链表递归 / 迭代Remove Nth Node From End of List- 快慢指针Reverse Linked List- 反转模板Linked List Cycle- 快慢指针必会Linked List Cycle II- 找环入口Reorder List- 链表拆分与合并Intersection of Two Linked Lists- 双指针经典LRU Cache- 设计题高频Sort List- 链表归并排序
4.4 栈 / 队列 / 单调栈
Valid Parentheses- 栈入门Min Stack- 栈设计题Evaluate Reverse Polish Notation- 栈表达式Daily Temperatures- 单调栈必刷Next Greater Element I- 单调栈基础Next Greater Element II- 单调栈进阶Decode String- 栈 + 递归结合Largest Rectangle in Histogram- 单调栈难点题Trapping Rain Water- 双指针 / 栈经典Implement Queue using Stacks- 栈队列转换
4.5 二分查找
Binary Search- 二分基础模板Search Insert Position- 最基本的二分变形Search in Rotated Sorted Array- 旋转数组经典Find First and Last Position of Element in Sorted Array- 边界二分Search a 2D Matrix- 二维矩阵二分Find Minimum in Rotated Sorted Array- 旋转数组找最小值Find Peak Element- 二分思想题Koko Eating Bananas- 二分答案Capacity To Ship Packages Within D Days- 二分答案进阶Median of Two Sorted Arrays- 二分难题,适合冲刺
4.6 二叉树基础
Invert Binary Tree- 树 DFS 入门Maximum Depth of Binary Tree- 树深度基础Same Tree- 树递归基础Symmetric Tree- 树对称判断Binary Tree Level Order Traversal- BFS 基础Binary Tree Right Side View- 层序遍历变形Construct Binary Tree from Preorder and Inorder Traversal- 建树必刷Construct Binary Tree from Inorder and Postorder Traversal- 建树进阶Validate Binary Search Tree- BST 判断Lowest Common Ancestor of a Binary Tree- LCA 经典Binary Tree Maximum Path Sum- 树 DP 高手题Path Sum II- 回溯 + 树结合
4.7 图 / DFS / BFS / 并查集
Number of Islands- DFS / BFS 入门Course Schedule- 拓扑排序经典Course Schedule II- 拓扑排序输出路径Clone Graph- 图遍历必会Pacific Atlantic Water Flow- 双向 DFS / BFSRotting Oranges- BFS 分层思想Open the Lock- BFS 状态压缩Number of Provinces- 并查集基础Redundant Connection- 并查集经典Word Search- DFS 回溯结合
4.8 动态规划
Climbing Stairs- DP 入门House Robber- 线性 DP 经典House Robber II- 环形 DPUnique Paths- 网格 DP 入门Minimum Path Sum- 网格 DP 经典Coin Change- 完全背包味道很重Coin Change II- 组合型 DPLongest Increasing Subsequence- LIS 必刷Longest Common Subsequence- LCS 经典Edit Distance- 字符串 DP 高频Partition Equal Subset Sum- 01 背包思想Target Sum- 背包变形Decode Ways- 字符串 DPPalindromic Substrings- 区间 DP 入门
4.9 回溯
Subsets- 回溯入门Permutations- 排列问题基础Combination Sum- 组合回溯经典Combination Sum II- 去重回溯Generate Parentheses- 经典剪枝题N-Queens- 回溯综合题Letter Combinations of a Phone Number- 回溯入门Restore IP Addresses- 回溯 + 剪枝
4.10 贪心 / Trie / 堆
Jump Game- 贪心经典Gas Station- 贪心难点题Task Scheduler- 贪心 + 计数Partition Labels- 贪心分段Top K Frequent Elements- 堆 / 哈希高频题Implement Trie (Prefix Tree)- Trie 基础
五、如果时间紧,先刷哪一批
如果你现在不是很有时间,我建议先刷这几批:
第一批:必须会
Two SumMaximum SubarrayMerge IntervalsValid ParenthesesBinary SearchReverse Linked ListBinary Tree Level Order TraversalNumber of IslandsClimbing StairsSubsets
第二批:面试特别爱问
Longest Substring Without Repeating CharactersMinimum Window SubstringLRU CacheDaily TemperaturesSearch in Rotated Sorted ArrayConstruct Binary Tree from Preorder and Inorder TraversalCourse ScheduleHouse RobberCoin ChangeGenerate Parentheses
第三批:冲分题
Median of Two Sorted ArraysBinary Tree Maximum Path SumEdit DistanceN-QueensTask Scheduler
六、我自己的建议
6.1 不要只刷,不复盘
每道题刷完最好写三行:
- 这题属于什么类型
- 核心模板是什么
- 下次怎么写更快
6.2 不要只看答案,不自己重写
看懂不等于会写。
面试的时候,考的是你能不能在 20-30 分钟内把它写出来。
6.3 刷题要和面试强绑定
如果你是 Java 后端,建议重点关注:
- 哈希
- 双指针
- 栈队列
- 二分
- 树
- 图
- DP
- 回溯
七、最后总结
如果让我一句话总结这篇文章,那就是:
算法题不要瞎刷,先 LeetCode,先题型,先模板,再二刷,最后才是冲刺。
如果你能把这 100 道题稳定过一遍,再把错题二刷一遍,面试里的算法环节基本就不会太虚了。
