编写函数计算模拟的成绩数组均为非负整数但是是无序的中相邻的名次间成绩的最大差异指按从高到低排序后前一名较后一名相差的最大值。显然排序后再统计是一种方法我们对时间效率有一定的要求:你能否在On的时间和空间复杂度下完成该任务?你可以认为数据数量少于2个时差异认为是0。用C语言编上述要求程序
#include <stdio.h>
int maxDifference(int* scores, int n) { if(n < 2) { return 0; }
int maxDiff = 0;
int maxScore = scores[0];
for(int i = 1; i < n; 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[] = {5, 9, 3, 7, 2, 8, 6}; int n = sizeof(scores) / sizeof(scores[0]);
int result = maxDifference(scores, n);
printf("Max difference: %d\n", result);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/jcaU 著作权归作者所有。请勿转载和采集!