题解 | #最大间隔#
最大间隔
https://www.nowcoder.com/practice/3a571cdc72264d76820396770a151f90
#include <stdio.h>
//如果删除的元素是用于求最大间隔的一个数的话,这个序列的最大间隔就比原先的最大间隔大
//所以就不能是最大间隔的最小值
//如果删除的元素与原先序列的最大间隔没有关系的话,这个序列的最大间隔有两种可能:
//1、原先序列的最大间隔
//2、重新产生一个最大间隔,如果任意删除一个元素时,最大间隔都比原先大时,我们就要去考虑这种可能性,就会产生新的最大间隔。刚开始木想到这种情况,我直接将原序列的最大间隔输出,提交成功了,但是仔细想了想还有这种可能
int main() {
int a, b, max = 0, min = 1000;
while (scanf("%d", &a) == 1) {
int arr[100];
scanf("%d", &arr[0]);
for (int i = 1; i < a; i++) {
scanf("%d", &arr[i]);
if (max < (arr[i] - arr[i - 1])) {
max = arr[i] - arr[i - 1]; //找出原序列的最大间隔
}
}
int c=0,min=1001;
for(int i=1;i<a-1;i++){
if(arr[i+1]-arr[i-1]<=max){ //第2种情况
c=1;
break;
}else{
if(arr[i+1]-arr[i-1]<min){
min=arr[i+1]-arr[i-1];
}
}
}
if(c){
printf("%d\n", max);
}else{
printf("%d\n",min);
}
}
return 0;
}
