
一起动脑筋 · 先看一个小故事
女孩要找一组数的最大值。机器人把整个解题过程串起来,而不是直接跳到代码。
把过程摊开来看
- 读题非空整数序列
- 方法首项当候选,逐项挑战
- 编码比较后按需更新
- 验证负数、重复、单项
完整解题要从题意走到算法,再到实现与验证。
这个最大值方法始终保存“已看部分的最大值”,所以全部看完后就是全体最大值。这个理由比只展示答案更重要。
01AC 是什么意思?
AC(Accepted)表示程序通过在线评测系统为该题准备的测试,被判定为正确。
但学习的目标不只是看到绿色 AC,而是知道自己为什么能得到它。
02完整流程第一阶段:读懂问题
① 读题② 明确输入输出③ 看数据范围④ 手算小例子
这一阶段不要急着写实现代码。
03第二阶段:建立模型
把故事转换成:
- 变量
- 数组
- 状态
- 树或图
- 数学关系
确认哪些信息真正影响答案。
04第三阶段:先找正确方法
如果没有高效思路,先设计暴力方案。
能正确解决→分析重复和瓶颈→再优化
05第四阶段:检查复杂度
把最大数据范围代入你的复杂度直觉:
- 循环会执行多少次?
- 搜索状态有多少?
- 内存大约多少?
06第五阶段:写代码
编码时保持:
变量名清楚
表达真实含义。
边界明确
数组和循环范围正确。
类型够用
避免整数溢出。
结构清晰
必要时拆函数。
07第六阶段:自己测试
至少测试:
- 官方样例
- 最小输入
- 最大或接近最大规模
- 特殊顺序和重复值
- 自己手算过的小例子
08第七阶段:如果 WA 怎么办?
WA(Wrong Answer)不是“重新乱改一遍”。
找失败用例→追踪第一次错误→修复并回归测试
09真正应该带走的是什么?
你已经知道了什么
- AC 表示程序通过评测。
- 完整解题不只是编码。
- 应先读题和建模,再设计方案。
- 从暴力到优化是一条重要路径。
- 复杂度、边界、测试和调试都是解题的一部分。
- 真正重要的是形成稳定、可复用的解决问题方法。
本专题完成:“编程与算法”栏目基础知识链已经完整串起来了。
轮到你来试一试
最大值出现两次,要返回最早的位置,更新时该在相等时也替换吗?
想好了吗?点开看解释
不该。只在严格更大时更新,就能保留第一次出现的位置;具体还要遵守题目编号规则。