1.简述: 描述 给定一个递增序列,a1a2...an。定义这个序列的最大间隔为d=max{ai+1- ai}(1≤in),现在要从a2,a3..an-1中删除一个元素。问剩余序列的最大间隔最小是多少? 输入描述: 第一行,
1.简述:
描述给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
输入描述:第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
输出描述:输出答案。
示例1输入:
51 2 3 7 8输出:
42.代码实现:
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; }} 【文章原创作者:韩国高防服务器 http://www.558idc.com/krgf.html 网络转载请说明出处】