算法训练最初很容易变成“今天又做了几题”。随着题目增多,我开始把训练目标从数量改为识别模式、验证复杂度,并在比赛后补齐没有完成的题。
一次训练的基本流程
- 限时独立思考,记录第一反应与卡点;
- 写出朴素解,明确时间与空间复杂度;
- 寻找约束中暗示的优化方向;
- 通过边界样例验证实现;
- 赛后把关键转换整理进题型笔记。
为什么要赛后补题
比赛中没有做出的题,通常最能暴露知识缺口。补题时我会区分三种原因:没有识别算法、思路正确但实现失败、时间分配不合理。对应的改进方式并不相同。
模板不是答案
并查集、最短路、二分和常见动态规划都值得保留可靠模板,但模板真正的价值是减少实现噪音。训练重点仍然是判断模型何时适用、状态如何定义、复杂度能否通过。
相关实现持续整理在 algorithmcode 仓库。这里则更多记录题目背后的判断过程与复盘。