#刷题交流# 数列差异的最小化
公式简化:首先,我们可以将公式 ∣(a[i]−b[j])2−k2∣ 进行简化。注意到 (a[i]−b[j])2−k2 可以分解为 (a[i]−b[j]−k)(a[i]−b[j]+k)。因此,我们需要找到使得 ∣(a[i]−b[j]−k)(a[i]−b[j]+k)∣ 最小的 a[i] 和 b[j]。

排序:为了高效地找到最接近的 a[i]−b[j],我们可以对数列 a 和 b 进行排序。排序后,我们可以使用双指针技术来遍历数列 a 和 b,从而找到最接近 k 的差值。

双指针技术:

初始化两个指针 i 和 j,分别指向数列 a 和 b 的起始位置。
计算当前的差值 diff = a[i] - b[j]。
如果 diff 大于 k,则增加 j 以减小 diff。
如果 diff 小于 k,则增加 i 以增大 diff。
如果 diff 等于 k,则直接返回 0,因为此时公式值为 0。
在每一步中,记录 ∣(a[i]−b[j]−k)(a[i]−b[j]+k)∣ 的最小值。
展开
评论