1 条题解

  • 0
    @ 2026-8-18 11:56:14

    思路

    遍历一遍数组,同时记录最大值和最小值,相减即可。初始值用数组的第一个元素,不要随便设 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 存结果。
    • 1

    信息

    ID
    13
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者