您的位置:首页 > 其它

求数组排序后相邻两个数的最大差值

2016-10-16 13:07 295 查看
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
;
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);
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  差值 桶排序 数组