1 条题解
-
0
思路
遍历一遍数组,同时记录最大值和最小值,相减即可。初始值用数组的第一个元素,不要随便设 0(万一全是负数就错了)。
代码
#include <stdio.h> int main() { int n; scanf("%d", &n); long long a[100000]; for (int i = 0; i < n; i++) scanf("%lld", &a[i]); long long mx = a[0], mn = a[0]; for (int i = 1; i < n; i++) { if (a[i] > mx) mx = a[i]; if (a[i] < mn) mn = a[i]; } printf("%lld\n", mx - mn); return 0; }易错点
- 极端数据里最大值 2147483647、最小值 -2147483648,差约 42.9 亿,超出 int 范围,要用
long long存结果。
- 极端数据里最大值 2147483647、最小值 -2147483648,差约 42.9 亿,超出 int 范围,要用
- 1
信息
- ID
- 13
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
吉公网安备22010402001496号