编写函数找出两个列表之间最相近的两个数, 称为最亲密的一对数, 函数参数是两个整数列表 nums1 和 nums2 , 从两个列表分别取两个数n1和n2,计算他们差的绝对值d, 找到d最小的一组并返回d。
时间: 2023-04-30 09:04:19 浏览: 225
js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
题目描述:编写函数找出两个列表之间最相近的两个数,称为最亲密的一对数,函数参数是两个整数列表nums1和nums2,从两个列表分别取两个数字n1和n2,计算它们的绝对差值d,找出所有可能的n1和n2的差的绝对值中最小的那个d,并返回最小差值d和包含这两个数的元组。
解题思路:首先我们将nums1和nums2排序,使用两个指针i和j从头遍历两个数组,如果nums1[i]和nums2[j]之间的差值比之前遍历到的差值更小,则更新最小差值d,并记录当前的一对数值;如果nums1[i]比nums2[j]小,则将i+1;如果nums1[i]比nums2[j]大,则将j+1,最终返回最小差值d和包含这两个数的元组。
Python代码实现如下:
def closestPair(nums1, nums2):
nums1.sort()
nums2.sort()
i, j = 0, 0
d_min, pair = float("inf"), ()
while i < len(nums1) and j < len(nums2):
d = abs(nums1[i] - nums2[j])
if d < d_min:
d_min, pair = d, (nums1[i], nums2[j])
if nums1[i] < nums2[j]:
i += 1
else:
j += 1
return d_min, pair
测试样例:
nums1 = [4, 2, 6, 8, 9]
nums2 = [1, 3, 5, 7, 10]
print(closestPair(nums1, nums2)) # Output: (1, (2, 3))
阅读全文