#include <stdio.h>

int fun(int D[], int N) {
    if (N < 2) {
        return 0;
    }
    
    int max_diff = 0;
    int min_value = D[0];
    
    for (int i = 1; i < N; i++) {
        if (D[i] > D[i-1]) {
            int diff = D[i] - min_value;
            if (diff > max_diff) {
                max_diff = diff;
            }
        } else {
            min_value = D[i];
        }
    }
    
    return max_diff;
}

int main() {
    int N;
    scanf("%d", &N);
    
    int D[N];
    for (int i = 0; i < N; i++) {
        scanf("%d", &D[i]);
    }
    
    int result = fun(D, N);
    printf("%d\n", result);
    
    return 0;
}

时间复杂度为O(n),空间复杂度为O(1)。

用c语言编写程序:有时我们会关心相邻名次间成绩的差异比如冠军与亚军差多少第四名与第五名差多少等等。编写函数计算模拟的成绩数组均为非负整数但是是无序的中相邻的名次间成绩的最大差异指按从高到低排序后前一名较后一名相差的最大值。显然排序后再统计是一种方法我们对时间效率有一定的要求:你能否在On的时间和空间复杂度下完成该任务?你可以认为数据数量少于2个时差异认为是0。输入样例:第一行是长度N第二行是N个以

原文地址: https://www.cveoy.top/t/topic/i9Qr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录