#yyds干货盘点# 名企真题专题: 最大间隔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 名企真题专题: 最大间隔相关的知识,希望对你有一定的参考价值。
1.简述:
给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=maxai+1 - ai (1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
输出答案。
输入:
5
1 2 3 7 8
输出:
4
2.代码实现:
import java.util.*;
public class Main
public static void main(String[] args)
Scanner in = new Scanner(System.in);
while (in.hasNext())
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++)
arr[i] = in.nextInt();
//保存所有情况下的最大间隔
List<Integer> ans = new ArrayList<>();
for (int i = 1; i < n - 1; i++)
//获取删除掉当前元素后的数组
List<Integer> curList = removeList(arr, i);
int maxDiff = 0;//记录此时数组的最大间隔
for (int j = 1; j < curList.size(); j++)
int diff = curList.get(j) - curList.get(j - 1);
maxDiff = Math.max(maxDiff, diff);
ans.add(maxDiff);
//此时ans中记录了所有情况下的最大间隔,找到最小值即可
Collections.sort(ans);
System.out.println(ans.get(0));
//获取删除掉某一个元素后的数组
public static List<Integer> removeList(int[] arr, int index)
List<Integer> res = new ArrayList<>();
for (int i = 0; i < arr.length; i++)
if (i == index) continue;
res.add(arr[i]);
return res;
以上是关于#yyds干货盘点# 名企真题专题: 最大间隔的主要内容,如果未能解决你的问题,请参考以下文章