题目链接
力扣(LeetCode) 1818.绝对差值和
不想戳的看下图:
样例:
数据范围:
解题思路:
二分查找后进行排序。
代码如下:
class Solution:def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int:mod = 1_000_000_007rec = sorted(nums1)sum, maxn, n = 0, 0, len(nums2)for i, v in zip(range(0, n) ,nums2):diff = abs(nums1[i] - v)sum = sum + diffj = bisect_left(rec, v)if j < n:maxn = max(maxn, diff - (rec[j] - v))if j > 0:maxn = max(maxn, diff - (v - rec[j - 1]))return (sum - maxn) % mod
小结
除了二分,还有哈希表等其他方法。有兴趣的同学们可以自行尝试。