算法刷题和蓝桥杯备赛复盘:从基础题到工程思维
写在前面
大学里我花过一段时间刷算法题,也准备过蓝桥杯。现在回头看,这段经历最大的价值不一定是比赛结果,而是让我更早训练了拆问题、写边界、调试代码和控制复杂度的能力。
这篇文章不写夸张的竞赛经历,只复盘我当时怎么学习算法,以及这些训练对后端开发有什么帮助。
为什么开始刷题
最开始刷算法题,是因为发现自己写代码时很容易卡在基础逻辑上。
比如:
- 循环边界经常写错
- 数组下标容易越界
- 遇到复杂一点的题不知道怎么拆
- 代码能跑,但可读性很差
刷题的过程让我慢慢意识到,算法训练不是只为了比赛,也是在训练基本编程能力。
我的学习顺序
一开始我没有直接看很难的题,而是按基础内容慢慢来:
- 数组和字符串
- 排序和二分
- 前缀和与差分
- 双指针
- 栈和队列
- BFS / DFS
- 简单动态规划
- 贪心和模拟
这个顺序对我比较友好。先把常见题型熟悉起来,再逐步看复杂一点的思路。
蓝桥杯备赛时的感受
蓝桥杯题目比较适合训练基础算法和代码实现能力。备赛时我主要做了三件事:
- 刷历年真题
- 整理常用模板
- 复盘自己错在哪里
我印象比较深的是,有些题并不是不会算法,而是实现细节出错。例如输入格式没处理好、边界条件漏掉、数据范围没看清楚。
这类问题看起来低级,但在真实开发里也很常见。接口参数、分页边界、空值判断,本质上也需要类似的严谨性。
常用模板整理
备赛时我会整理一些基础模板,比如二分、前缀和、DFS。
二分查找:
1 | |
前缀和:
1 | |
模板不是为了死背,而是为了在遇到类似问题时快速进入状态。
刷题对后端开发的帮助
后来做后端项目时,我发现算法训练对工程开发也有帮助。
边界意识
刷题经常要处理空数组、重复元素、最大值、最小值。写接口时也一样,要考虑参数为空、数据不存在、分页越界等情况。
拆问题能力
复杂题目不能一口气写完,需要拆成子问题。后端需求也是一样,要拆成表结构、接口、业务逻辑、异常处理和联调步骤。
调试习惯
算法题错了以后,需要用样例一步步跟变量。排查接口 Bug 时,也需要看入参、日志、SQL 和返回结果。
复杂度意识
算法里会关注时间复杂度和空间复杂度。后端里虽然不一定天天写算法,但 SQL 查询、循环处理、批量数据,都需要有复杂度意识。
现在怎么看算法
我现在不会把自己包装成竞赛选手,也不会说算法能力特别强。更真实的说法是:算法刷题帮我补了编程基本功,也让我在写业务代码时更注意边界和效率。
对 Java 后端来说,算法不是唯一重点,但它确实能体现一个人的基础思维能力。
小结
这段算法学习和蓝桥杯备赛经历,对我最大的帮助是:
- 提升代码实现能力
- 增强边界判断意识
- 训练问题拆解能力
- 养成复盘错误的习惯
这些能力后来也迁移到了后端学习里。相比强调比赛成绩,我更愿意把它当成一段基础能力训练的经历。