packagecom.company;import java.util.*;classSolution {public int maximumGap(int[] nums) {if (nums.length < 2) {return 0;
}//用 Radix 排序
int small =Integer.MAX_VALUE;int big = 0;for (intnum : nums) {if (num
small=num;
}if (num >big) {
big=num;
}
}
System.out.println("big is " + big + " small " +small);int gap = (big - small - 1) / (nums.length - 1) + 1;if (gap == 0) {return 0;
}int gap_num = (big - small) / gap + 1;int[] first = new int[gap_num];int[] second = new int[gap_num];//[ )
System.out.println("gap is " + gap + " len is " + nums.length + "big is " + big + " small " +small);for (intnum : nums) {int index = (num - small) /gap;if (first[index] == 0 || num
first[index]=num;
}if (second[index] == 0 || num >second[index]) {
second[index]=num;
}
}int ret = -1;int last = -1;for (int i=0; i
}if (last == -1) {
last=second[i];
ret= last -first[i];
}else{if (first[i] - last >ret) {
ret= first[i] -last;
}if (second[i] - first[i] >ret) {
ret= second[i] -first[i];
}
last=second[i];
}
}returnret;
}
}public classMain {public static voidmain(String[] args) {
System.out.println("Hello!");
Solution solution= newSolution();int[] nums = {1,1,1,1,1,5,5,5,5,5};int ret =solution.maximumGap(nums);
System.out.printf("Get ret: %s\n", ret);/*Iterator> iterator = ret.iterator();
while (iterator.hasNext()) {
Iterator iter = iterator.next().iterator();
while (iter.hasNext()) {
System.out.printf("%d,", iter.next());
}
System.out.println();
}*/System.out.println();
}
}