给定两个整数数组a
和b
,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差
示例:
输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出: 3,即数值对(11, 8)
提示:
1 <= a.length, b.length <= 100000
-2147483648 <= a[i], b[i] <= 2147483647
- 正确结果在区间[-2147483648, 2147483647]内
class Solution:
def smallestDifference(self, a: List[int], b: List[int]) -> int:
a.sort()
b.sort()
i, j, res = 0, 0, 2147483647
m, n = len(a), len(b)
while i < m and j < n:
if a[i] == b[j]: return 0
res = min(res, abs(a[i] - b[j]))
if a[i] > b[j]: j += 1
else: i += 1
return res
class Solution {
public int smallestDifference(int[] a, int[] b) {
Arrays.sort(a);
Arrays.sort(b);
int m = a.length, n = b.length;
int i = 0, j = 0;
long res = Long.MAX_VALUE;
while (i < m && j < n) {
if (a[i] == b[j]) return 0;
res = Math.min(res, Math.abs((long) a[i] - (long) b[j]));
if (a[i] > b[j]) ++j;
else ++i;
}
return (int) res;
}
}