#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的正整数,表示一个递增序列。

输出描述:

输出答案。

示例1

输入:

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干货盘点# 名企真题专题: 最大间隔的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 名企真题专题:怪数

#yyds干货盘点# 名企真题专题:序列找数

#yyds干货盘点# 名企真题专题: 回文串

#yyds干货盘点# 名企真题专题:编码

#yyds干货盘点# 名企真题专题:懂二进制

#yyds干货盘点# 名企真题专题: 棋子翻转