问题描述
小R在研究两个数列之间的关系。他给定了两个数列 a
和 b
,长度分别为 n
和 m
,并设计了一个有趣的公式:∣(a[i]−b[j])2−k2∣∣(a[i]−b[j])2−k2∣,其中 k
是给定的一个整数, 0≤i<n 0≤i<n,0≤j<m0≤j<m。现在,小R想知道如何选择数列 a
和 b
中的元素 a[i]a[i] 和 b[j]b[j],使得这个公式的值达到最小。
给定两个整数数列 a
(长度为 n
) 和 b
(长度为 m
),以及一个整数 k
,你需要找到这个公式的最小值。
约束条件
- 1≤n,m≤十的五次方
- 0≤k≤十的九次方
- 0≤a[i],b[j]≤十的九次方
代码
def solution(n: int, m: int, k: int, a: list[int], b: list[int]) -> int:
# Please write your code here
min_diff = float('inf')
for i in range(n):
for j in range(m):
diff = abs((a[i] - b[j]) ** 2 - k ** 2)
if diff < min_diff:
min_diff = diff
return min_diff
if __name__ == "__main__":
# You can add more test cases here
print(solution(5, 5, 1, [5, 3, 4, 1, 2], [0, 6, 7, 9, 8]) == 0)
print(solution(5, 5, 0, [5, 3, 4, 1, 2], [0, 6, 7, 9, 8]) == 1)
print(solution(5, 6, 3, [5, 3, 4, 1, 2], [0, 6, 7, 9, 8, 11]) == 0)