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;
    }
}