【蘑菇街】最大間隔
阿新 • • 發佈:2018-11-05
題目描述
給定一個遞增序列,a1 <a2 <...<an 。定義這個序列的最大間隔為d=max{ai+1 - ai}(1≤i<n),現在要從a2 ,a3 ..an-1 中刪除一個元素。問剩餘序列的最大間隔最小是多少?
輸入描述:
第一行,一個正整數n(1<=n<=100),序列長度;接下來n個小於1000的正整數,表示一個遞增序列。
輸出描述:
輸出答案。
示例1
輸入
5 1 2 3 7 8
輸出
4
#include "stdio.h" #include <math.h> #include <iostream> #include <vector> #include <stack> #include "limits.h" #include <unordered_map> using namespace std; int main() { int num; while (cin >> num) { vector<int> list(num); int disMax = INT_MIN, pos = -1; for (int i = 0; i < num; i++) { cin >> list[i]; if (i > 0&& (list[i] - list[i - 1]) > disMax) { disMax = list[i] - list[i - 1]; pos = i; } } int minMax=INT_MAX; for (int i = 1; i < num - 1; i++) { if (i == pos || i == pos - 1) continue; int curMax = max(list[i + 1] - list[i - 1], disMax); minMax = min(minMax, curMax); } cout << minMax << endl; } return 0; }