文章目錄
已知两个元素从小到大排列的数组x[]与y[],请编写一个程序算出两个数组元素彼此之间差的绝对值最小的一个树,此值称为数组的距离。
说明: 如果x[i]与y[i]是两个元素,那么 |x[i] - y[i]| 就是这两个元素之间的距离,所有这些距离的最小值,称为数组的距离。比如说x[]有1,3,5,7,9, y[]有2,6,8,那么最短距离就是1,因为x[0]与y[0]、 x[1]与y[0]、x[2]与y[1]、x[3]与y[1]、还有x[4]与y[2]的距离都是1。
依然是利用数组已经排好序的特性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class MinDist { public static int minDist(int[] x, int[] y) { int result = Integer.MAX_VALUE; int i = 0; int j = 0; while (i < x.length && j < y.length) { if (x[i] >= y[j]) { result = Math.min(result, x[i] - y[j]); j++; } else { result = Math.min(result, y[j] - x[i]); i++; } } return result; } public static void main(String[] args) { int[] x = {1, 3, 5, 7, 9}; int[] y = {2, 6, 8}; System.out.println(minDist(x, y)); } }
|