求数组排序后相邻两个数的最大差值
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); } } }
相关文章推荐
- Maximum Gap 寻找数组中排序后相邻两个数的最大差值,桶排序,O(n)
- 求无序数组排序后相邻两个数的最大差值
- 桶---求无序数组排序后,最大的相邻差值
- 如果给定一个数组arr[0,...N-1],要求找出相邻两个数的最大差值
- 无序数组排序后的最大相邻差值求解
- 数据结构之——找到无序数组中排序后相邻元素差值的最大值
- 求无序数组排序后相邻俩数最大差值(思路及详解)
- 无序数组排序后的最大相邻差值
- 无序数组排序后的最大相邻差值
- 给定一个无序数组,排序之后求相邻两数之间的最大差值
- 排序数组中的相邻两数最大差值
- 排序后数组中相邻两数的最大值
- 一个无序实数数组中的相邻两个元素的最大差值
- 求相邻元素的最大差值,先按从小到大排序最后比较
- 求Maximim Gap 排序后的两个相邻元素之间的最大差值
- 数组排序之后相邻数的最大差值
- 无序数组求相邻元素最大差值(tiger基金的笔试题)
- 数组与矩阵---数组排序之后相邻数的最大差值
- (动态规划DP)面试题:求数组中两个数的最大差值(只能下标大的减去下标小的)符合无后效性
- 算法初级02——荷兰国旗问题、随机快速排序、堆排序、桶排序、相邻两数的最大差值问题、工程中的综合排序算法