Maximum Gap
public class Solution { public int maximumGap(int[] nums) { int n = nums.length; if(n <= 1) return 0; int max = Integer.MIN_VALUE; for(int i : nums){ max = Math.max(max, i); } int min = Integer.MAX_VALUE; for(int i : nums) { min = Math.min(min, i); } int len = (int)Math.ceil((double)(max-min) / (n - 1)); int[] maxnum = new int[n]; Arrays.fill(maxnum, Integer.MIN_VALUE); int[] minnum = new int[n]; Arrays.fill(minnum, Integer.MAX_VALUE); for(int i = 0; i < n; i++) { int index = (nums[i]-min)/len; maxnum[index] = Math.max(maxnum[index],nums[i]); minnum[index] = Math.min(minnum[index],nums[i]); } int gap = 0; int pre = maxnum[0]; for(int i = 1; i < n ; i++) { if(minnum[i] == Integer.MAX_VALUE) continue; gap = Math.max(gap, minnum[i]-pre); pre = maxnum[i]; } return gap; } }
Leave A Comment