1. 找出无序数组排序后的最大差值
package comic;
public class t5 {
public static int maxDiff(int[] arr) {
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println(min);
System.out.println(max);
int d = max - min;
if (d == 0) {
return 0;
}
int bucketNum = arr.length;
Bucket[] buckets = new Bucket[bucketNum];
for (int i = 0; i < arr.length; i++) {
buckets[i] = new Bucket();
}
for (int i = 0; i < arr.length; i++) {
int index = ((arr[i] - min) * (bucketNum - 1)) / d;
if (buckets[index].min == null || buckets[index].min > arr[i]) {
buckets[index].min = arr[i];
}
if (buckets[index].max == null || buckets[index].max < arr[i]) {
buckets[index].max = arr[i];
}
}
for (int i = 0; i < buckets.length; i++) {
System.out.println("桶" + String.valueOf(i + 1) + ":");
System.out.println(("min:" + buckets[i].min + " " + "max:" + buckets[i].max));
}
int leftMax = buckets[0].max;
int maxDistance = 0;
for (int i = 1; i < buckets.length; i++) {
if (buckets[i].min == null) {
continue;
}
if (buckets[i].min - leftMax > maxDistance) {
maxDistance = buckets[i].min - leftMax;
}
leftMax = buckets[i].max;
}
return maxDistance;
}
public static void main(String[] args) {
int[] arr = {
1, 5, 3, 9, 6, 4, 18, 8};
System.out.println(maxDiff(arr));
}
}
2. 用栈实现一个队列
package comic;
import java.util.Stack;
public class