边界最爱错

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 试一遍。

登录 后可看答案

边界最爱错 · 考级冲刺 · op599 课程