您的位置:首页 > 其它

笔试题(蘑菇街):最大间隔

2016-03-19 17:57 330 查看
最大间隔

给定一个递增序列,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<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int fun(int n){
if(n < 3)
return 0;
vector<int> nums;
int Max = -1;
int tmp;
cin>>tmp;
nums.push_back(tmp);
for(int i=1; i<n; i++){
cin>>tmp;
Max = max(Max, tmp - nums.back());
nums.push_back(tmp);
}

if(n == 3)
return nums[2] - nums[0];
//if(n == 4)
//    if( nums[1]-nums[0] != Max && nums[3]-nums[2] != Max )
//    	Max = max(nums[1]-nums[0], nums[3]-nums[2]);

int Min = 0x7FFFFFFF;
for(int i=0; i<=n-3; i++)
Min = min(Min, nums[i+2] - nums[i]);

return max(Min, Max);
}

int main(){
int n;
while(cin>>n){
int res = fun(n);
cout<<res<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: