蘑菇街笔试题 最大间隔

来源:互联网 发布:数据分析培训课程计划 编辑:程序博客网 时间:2024/04/29 05:53

给定一个递增序列,a1 < a2 <…< an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤ i < n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?

输入描述:
第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。

输出描述:
输出答案。

输入例子:
5
1 2 3 7 8

输出例子:
4

#include <stdio.h>#include <stdlib.h>#include <math.h>#define INF 0x7fffffffint main() {    int n;    int dmax;    int dmin;    int arr[103];    while (scanf("%d", &n) != EOF) {        if (n == 1 || n == 2) {            printf("0\n");            continue;        }        dmax = 0;        dmin = INF;        for (int i = 0; i < n; ++i) {            scanf("%d", &arr[i]);        }        int temp;        for (int i = 1; i < n; ++i) {            if ((temp = (arr[i] - arr[i - 1])) > dmax) {                dmax = temp;            }            if (i > 1 && (temp = (arr[i] - arr[i - 2])) < dmin) {                dmin = temp;            }        }        int res = (dmax > dmin) ? dmax : dmin;        printf("%d\n",res);    }    return 0;}
0 0