import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = in.nextInt();
}
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int num : nums) {
max = Math.max(max, num);
min = Math.min(min, num);
}
int avg = (max - min) / (n - 1);
int[] count = new int[n + 1];
int[] maxs = new int[n + 1];
int[] mins = new int[n + 1];
Arrays.fill(maxs, Integer.MIN_VALUE);
Arrays.fill(mins, Integer.MAX_VALUE);
for (int i = 0; i < n; i++) {
int index = (nums[i] - min) / avg;
count[index]++;
maxs[index] = Math.max(maxs[index], nums[i]);
mins[index] = Math.min(mins[index], nums[i]);
}
int maxDif = Integer.MIN_VALUE;
int pre = maxs[0];
for (int i = 1; i < n + 1; i++) {
if (count[i] > 0) {
maxDif = Math.max(maxDif, mins[i] - pre);
pre = maxs[i];
}
}
System.out.println(maxDif);
}
}
}
求数组排序后相邻两个数的最大差值
猜你喜欢
转载自blog.csdn.net/ok0011/article/details/52829951
今日推荐
周排行