#3746. 序曲-1.4-两数组最短距离

序曲-1.4-两数组最短距离

题目描述
已知两个元素从小到大排列的数组x[]与y[],请编写一个程序计算出两个数组元素彼此之间差的绝对值中的最小的一个数,此值称作数组的距离

【说明】 如果x[i]与y[j]是两个元素,那么|x[i] - y[j]|就是这两个元素之间的距离,所有这些距离的极小值,称为数组的距离。比如说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。

注意,如果x[]与y[]各有m与n个元素,那么元素之间的距离就一共有m·n个;事实上往往用不着这么多个值,应该活用x[]与y[]已经排列好的特性,不要把所有的距离都算出来。

输入格式

  • 第一行两个整数 m 和 n(1 ≤ m, n ≤ 1000)。
  • 第二行 m 个严格升序的整数(范围:[-10^6, 10^6])。
  • 第三行 n 个严格升序的整数(范围:[-10^6, 10^6])。

输出格式

  • 最小绝对差值(非负整数)。

样例输入 1

3 3  
1 3 5  
2 4 6  

样例输出 1

1  

样例输入 2

4 2  
-10 0 10 20  
-5 5  

样例输出 2

5  

数据范围

  • 保证输入数组严格升序。
  • 要求时间复杂度 O(m + n)。