#include <stdio.h>
#include <stdlib.h>

int maxDifference(int* scores, int size) {
    // 如果数组大小小于2,差异认为是0
    if (size < 2) {
        return 0;
    }

    int maxDiff = 0;
    int maxScore = scores[0];

    for (int i = 1; i < size; i++) {
        if (scores[i] > maxScore) {
            maxScore = scores[i];
        } else {
            int diff = maxScore - scores[i];
            if (diff > maxDiff) {
                maxDiff = diff;
            }
        }
    }

    return maxDiff;
}

int main() {
    int scores[] = {90, 75, 80, 95, 70};
    int size = sizeof(scores) / sizeof(int);

    int result = maxDifference(scores, size);
    printf("Max Difference: %d\n", result);

    return 0;
}

在这个程序中,我们使用了一个变量maxDiff来记录最大差异。首先,我们将第一个成绩设置为最高分。然后,我们从第二个成绩开始遍历数组。如果当前成绩大于最高分,我们更新最高分的值。如果当前成绩小于或等于最高分,我们计算当前成绩与最高分的差异,并将其与maxDiff进行比较。如果差异大于maxDiff,我们更新maxDiff的值。最后,我们返回maxDiff作为结果。

该算法的时间复杂度为O(n),其中n为成绩数组的大小。空间复杂度为O(1),因为我们只使用了常量大小的额外空间。


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

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