边界最爱错
约 8 分钟
"边界情况"是出题人最爱设卡的地方,也最容易被忽略:、、数组只有一个元素、所有元素相同、第一个或最后一个元素、空输入。主逻辑对了,往往就栽在这些角落。
// 求最大值,n=1 时循环体一次都不进,靠初值 a[0] 兜底才对
int mx = a[0];
for (int i = 1; i < n; i++) // n=1: i 从 1,1<1 假,不进循环
if (a[i] > mx) mx = a[i];
cout << mx; // n=1 输出 a[0],正确
坑:许多写法在 时正常,一到 或 就露馅——循环一次不进、下标 i-1 变成 -1 越界、(l+r)/2 在空区间出错。所以写完先拿 (有时还有 )试一遍,是性价比最高的自查。列个边界清单:最小规模、最大规模、全相同、正好卡在等号(< 还是 <=)。边界一稳,整题的健壮性就上来了。
小纸条
写完程序,先拿 n=1 试一遍。
登录 后可看答案