📅  最后修改于: 2023-12-03 14:50:47.606000             🧑  作者: Mango
有两个由元素组成的数组 $A$ 和 $B$,每个数组有 $N$ 个元素。您需要从数组 $A$ 中选择一个元素 $x$,从数组 $B$ 中选择一个元素 $y$,以最小化表达式 $|x - y|$ 的值。
输出一个整数,表示表达式的最小值。
5
1 2 3 4 5
15 14 13 12 11
10
本题可以通过一次排序和一次循环来解决。首先,将两个数组都按照从小到大的顺序进行排序。然后,用两个指针 $i$ 和 $j$ 来分别指向数组 $A$ 和 $B$ 的第一个元素。从头到尾遍历这两个数组,每次令 $x=A_i$,$y=B_j$,计算它们之差的绝对值 $|x-y|$,如果 $|x-y|$ 小于前面计算的结果,则更新最小值。如果 $x \leq y$,则增加 $i$ 的值,否则增加 $j$ 的值。最后输出最小值即可。
def min_difference(n, a, b):
a.sort()
b.sort()
i = j = 0
min_diff = float('inf')
while i < n and j < n:
diff = abs(a[i] - b[j])
if diff < min_diff:
min_diff = diff
if a[i] <= b[j]:
i += 1
else:
j += 1
return min_diff