一句话理解
求最小值和求最大值对称:遇到更小的就更新。
为什么要学
同一套遍历模板。
讲解
初始化成第一个元素,或初始化成一个很大的数(1e9 或 LLONG_MAX)。
if (a[i] < ans) ans = a[i];
若还要下标,相等时想清楚取左还是取右。
例子
int a[5] = {0, 4, 1, 7, 1};
int ans = a[1];
for (int i = 2; i <= 4; i++)
if (a[i] < ans) ans = a[i];
cout << ans;
输出:
1
4 被 1 替换,后面 7 更大,最后的 1 不更小,最小值 1。
常见错误
- 初始化成 0,而数组全是正的大数时碰巧对,全正小时仍可能错吗?若全是正数且都大于 0,0 会比谁都小,答案变成 0。
- 用 max 的代码改 min 时漏改符号。