1. 补题计划概述
2026年3月23日至3月30日这一周,我决定集中精力进行系统性补题训练。作为一名长期坚持算法训练的开发者,我深知定期查漏补缺的重要性。这段时间的补题计划主要针对过去三个月内收藏但未及时完成的LeetCode周赛题目,特别是那些当时看到就有思路但没时间深入研究的题目。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目筛选与分类策略
2.1 优先级评估标准
我建立了多维度的题目评估体系:
- 难度系数:优先选择1700-2100分的题目
- 题型分布:动态规划(35%)、图论(25%)、数据结构(20%)、数学(15%)、其他(5%)
- 历史出现频率:参考近6个月周赛和面试真题
2.2 具体题目清单
经过筛选,最终确定以下重点题目:
- LC-2157 字符串分组(位运算+并查集)
- LC-2188 最小化目标值(二分答案+贪心)
- LC-2213 最长重复子串(后缀数组+二分)
- LC-2249 环形子数组的最大和(前缀和+单调队列)
3. 每日训练实施方案
3.1 时间分配方案
采用番茄工作法进行训练:
- 上午9:00-11:30:2个番茄钟解题 + 1个番茄钟复盘
- 下午14:00-17:00:3个番茄钟解题
- 晚上20:00-21:30:错题重做与笔记整理
3.2 解题流程规范
每道题严格遵循以下步骤:
- 15分钟独立思考并手写伪代码
- 实现初始版本代码(保留所有调试痕迹)
- 针对边界条件设计测试用例
- 提交后分析运行时空复杂度
- 研究讨论区最优解并重构代码
4. 工具链与效率提升
4.1 开发环境配置
使用VS Code配合以下插件:
- LeetCode插件(测试用例管理)
- Code Runner(快速执行)
- TabNine(智能补全)
- GitLens(版本对比)
4.2 辅助工具栈
- draw.io:绘制算法流程图
- Notion:建立题目知识图谱
- Wolfram Alpha:验证数学推导
- 自定义的测试数据生成脚本
5. 典型题目深度解析
5.1 LC-2213 最长重复子串
这道题考察后缀数组的经典应用。我的解题过程经历了三个阶段:
- 初始思路:暴力枚举所有子串(O(n³)超时)
- 优化方向:二分答案+滚动哈希(O(nlogn))
- 最终方案:DC3算法构建后缀数组(O(n))
关键突破点在于理解height数组的性质:
python复制def build_suffix_array(s):
n = len(s)
k = 1
sa = list(range(n))
ra = [ord(c) for c in s]
while k < n:
sa = sorted(sa, key=lambda x: (ra[x], ra[x+k]) if x+k < n else (ra[x],))
new_ra = [0]*n
new_ra[sa[0]] = 0
for i in range(1,n):
cmp = (ra[sa[i]], ra[sa[i]+k]) if sa[i]+k <n else (ra[sa[i]],)
new_ra[sa[i]] = new_ra[sa[i-1]] + (1 if cmp > (ra[sa[i-1]], ra[sa[i-1]+k]) if sa[i-1]+k <n else (ra[sa[i-1]],) else 0)
ra = new_ra
if ra[sa[-1]] == n-1:
break
k *= 2
return sa
5.2 LC-2249 环形子数组
这道题的难点在于处理环形条件。我总结出两种解法对比:
| 方法 | 时间复杂度 | 空间复杂度 | 适用场景 |
|---|---|---|---|
| 前缀和+单调队列 | O(n) | O(n) | 通用情况 |
| Kadane算法变种 | O(n) | O(1) | 数据量大时 |
关键点在于将环形数组拆解为两种情况:
- 最大子数组不跨头尾:常规Kadane算法
- 最大子数组跨头尾:总和 - 最小子数组和
6. 训练成果与反思
6.1 量化成果
通过7天集中训练:
- 完成32道中等以上难度题目
- 平均每题耗时45分钟
- 最优解达成率从63%提升至82%
- 建立个人错题本(共记录17个易错点)
6.2 认知收获
- 发现自己的思维定式:过度依赖动态规划,忽视状态压缩技巧
- 对单调栈的应用场景有了新认识
- 掌握了处理环形数组的通用模版
- 养成了更规范的测试习惯
7. 持续改进计划
基于本次训练经验,我制定了后续提升方案:
- 每周固定3小时专项补题时间
- 建立题目-知识点双向索引
- 参与Codeforces虚拟比赛锻炼临场发挥
- 每月review错题本并更新解题模板库
这次集中补题让我意识到,算法能力的提升不仅需要刷题数量,更需要深度思考和系统总结。后续会将重点放在:
- 减少重复错误率
- 提高首次提交正确率
- 增强复杂问题的拆解能力
