天天看點

蘑菇街筆試題 最大間隔

給定一個遞增序列,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 0x7fffffff

int main() {
    int n;
    int dmax;
    int dmin;
    int arr[];
    while (scanf("%d", &n) != EOF) {
        if (n ==  || n == ) {
            printf("0\n");
            continue;
        }
        dmax = ;
        dmin = INF;
        for (int i = ; i < n; ++i) {
            scanf("%d", &arr[i]);
        }
        int temp;
        for (int i = ; i < n; ++i) {
            if ((temp = (arr[i] - arr[i - ])) > dmax) {
                dmax = temp;
            }
            if (i >  && (temp = (arr[i] - arr[i - ])) < dmin) {
                dmin = temp;
            }
        }
        int res = (dmax > dmin) ? dmax : dmin;
        printf("%d\n",res);
    }
    return ;
}
           

繼續閱讀