暴力模拟删除每个元素后最大间隔的变化即可
#include <algorithm>
#include <climits>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
while (cin >> n) {
vector<int> nums(n);
int temp;
for (int i = 0; i < n; i++) {
cin >> temp;
nums[i] = temp;
}
int maxDiff = 0;
for (int i = 0; i < n - 1; i++) {
maxDiff = max(maxDiff, nums[i + 1] - nums[i]);
}
vector<int> dp(n, 0);
dp[0] = INT_MAX, dp[n - 1] = INT_MAX;
for (int i = 1; i < n - 1; i++) {
dp[i] = max(maxDiff, nums[i + 1] - nums[i - 1]);
}
cout << *min_element(dp.begin(), dp.end()) << endl;
}
return 0;
}
时间复杂度:O(n),用于遍历数组
空间复杂度:O(n),用于存储数组

京公网安备 11010502036488号