系统性力扣刷题计划,结合高频题、经典题和算法思想学习建议,分阶段从基础到进阶编排,覆盖所有核心标签,并标注题号与学习方法。建议每天投入2-3小时,配合总结和复习,预计3-6个月可全面进阶(根据个人实际情况来实现)。前提是学习过基础的语法(java,C,python都可以,自己选择),还有数据结构的知识。学习算法是一个很痛苦的过程需要坚持不懈。
一、基础数据结构与算法(4-6周)
1. 数组与双指针
• 目标:掌握索引操作、快慢指针、滑动窗口。
• 必刷题:
• 27. 移除元素(快慢指针)
• 283. 移动零(双指针变形)
• 704. 二分查找(边界控制)
• 15. 三数之和(排序+双指针)
• 学习建议:
• 二分法:理解循环不变量,如while(left <= right)
的终止条件。
• 双指针:画图模拟快慢指针移动,如移动零时快指针探路、慢指针标记非零位置。
2. 链表
• 目标:掌握虚拟头节点、递归反转、环形检测。
• 必刷题:
• 203. 移除链表元素(虚拟头节点)
• 206. 反转链表(递归/迭代)
• 141. 环形链表(快慢指针)
• 19. 删除链表的倒数第N个结点(双指针)
• 学习建议:
• 递归:手动展开递归栈,如反转链表时head.next.next = head
的含义。
• 环形检测:推导快慢指针相遇时环的起点公式(Floyd算法)。
3. 字符串
• 目标:熟悉反转、哈希统计、回文处理。
• 必刷题:
• 344. 反转字符串(双指针)
• 387. 字符串中的第一个唯一字符(哈希表)
• 5. 最长回文子串(中心扩展法)
• 学习建议:
• 哈希统计:用int[26]
数组代替HashMap处理小写字母问题。
• 回文处理:中心扩展法需注意奇偶长度,如expand(s, i, i)
和expand(s, i, i+1)
。
二、中级算法思想(4-8周)
4. 哈希表与滑动窗口
• 目标:掌握空间换时间、窗口动态调整。
• 必刷题:
• 1. 两数之和(哈希表入门)
• 3. 无重复字符的最长子串(滑动窗口)
• 49. 字母异位词分组(哈希键设计)
• 学习建议:
• 哈希键设计:字符串排序后作为键,如异位词分组。
• 滑动窗口:用Map<Character, Integer>
记录字符最后一次出现的位置。
5. 栈与队列
• 目标:熟悉括号匹配、单调栈、层序遍历。
• 必刷题:
• 20. 有效的括号(栈的经典应用)
• 155. 最小栈(辅助栈)
• 239. 滑动窗口最大值(单调队列)
• 学习建议:
• 单调栈:理解“最近更大元素”问题中栈的单调性维护。
• 层序遍历:用队列实现二叉树层次遍历时,记录每层节点数。
6. 二叉树与递归
• 目标:掌握DFS/BFS、递归分治。
• 必刷题:
• 104. 二叉树的最大深度(递归基础)
• 102. 二叉树的层序遍历(BFS模板)
• 236. 二叉树的最近公共祖先(后序遍历)
• 学习建议:
• 递归三要素:终止条件、递归调用、返回值,如二叉树深度递归返回max(left, right) + 1
。
• 后序遍历:LCA问题中,若左右子树均含目标节点,则当前节点为祖先。
三、进阶算法与高频题(6-12周)
7. 回溯算法
• 目标:理解排列组合、剪枝优化。
• 必刷题:
• 46. 全排列(回溯模板)
• 78. 子集(组合问题)
• 22. 括号生成(剪枝条件)
• 学习建议:
• 回溯模板:选择→递归→撤销
,如全排列中path.add(nums[i])
后需移除。
• 剪枝:括号生成时,左括号数不能超过n,右括号数不能超过左括号数。
8. 动态规划(DP)
• 目标:掌握状态转移、背包问题。
• 必刷题:
• 70. 爬楼梯(一维DP)
• 322. 零钱兑换(完全背包)
• 1143. 最长公共子序列(二维DP)
• 学习建议:
• 状态定义:如零钱兑换中dp[i]
表示凑出金额i的最小硬币数。
• 空间优化:滚动数组降维,如斐波那契数列只需保留前两个状态。
9. 贪心算法
• 目标:理解局部最优与全局最优。
• 必刷题:
• 455. 分发饼干(排序+贪心)
• 406. 根据身高重建队列(双维度排序)
• 435. 无重叠区间(区间调度)
• 学习建议:
• 排序预处理:如身高队列问题先按身高降序、k值升序排列。
• 反证法:证明贪心策略的正确性,如区间调度中选择最早结束的区间。
四、系统学习与资源推荐
- 分阶段练习:按标签集中突破,如数组→链表→哈希表→动态规划,每类刷3-5题。
- 总结模板:整理常见题型的代码框架,如回溯的递归树、动态规划的状态转移表。
- 高频题冲刺:面试前重点刷热题HOT 100和剑指Offer系列,如146. LRU缓存机制。
- 理论结合实践:参考《算法导论》理解分治策略,配合力扣题解学习优化技巧。