【深基4.习5】求极差 / 最大跨度值 · 教师题解
【深基4.习5】求极差 / 最大跨度值
解题思路
遍历时同时维护最小值与最大值,输出两者之差。
正确性说明
逐次取 min、max 分别准确维护已读集合的极值,最终之差就是极差的定义。
易错点
不能用相邻差替代极差;n=1 时极差为 0。
复杂度
时间 O(n),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int lo = INT_MAX, hi = INT_MIN;
while (n--) {
int x;
cin >> x;
lo = min(lo, x);
hi = max(hi, x);
}
cout << hi - lo << "\n";
return 0;
}