import java.util.Arrays;
public class Temp {
public static int maxDiff(int[] nums) {
int n = nums.length;
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[] 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) * n / (max - min);
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];
}
}
return maxDif;
}
public static void main(String[] args) {
int[] nums = {12, 46, 47, 28, 72, 39, 93, 123, 429, 6, 90, 33, 5};
System.out.println(maxDiff(nums));
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
System.out.println("---------------");
for (int i = 0; i < nums.length - 1; i++) {
System.out.println(Math.abs(nums[i] - nums[i + 1]));
}
System.out.println("---------------");
}
}
求数组排序后相邻两个数的最大差值
最新推荐文章于 2022-03-31 21:44:11 发布