文章目录
- 一、题目
- [二、C# 题解](# 题解)
一、题目
给定两个整数数组 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
- 正确结果在区间
[0, 2147483647]
内
二、C# 题解
将两个数组排序,依次比较最临近的两个数的差值。每次取较小的那个数前进一位。如果两个数相等,则直接返回 0,因为没有比 0 更小的结果了。
csharp
public class Solution {
public int SmallestDifference(int[] a, int[] b) {
Array.Sort(a);
Array.Sort(b);
int pa = 0, pb = 0;
long ans = Int32.MaxValue;
while (pa < a.Length && pb < b.Length) {
if (a[pa] == b[pb]) return 0;
ans = Math.Min(Math.Abs((long)(a[pa] - b[pb])), ans);
if (a[pa] < b[pb]) pa++;
else pb++;
}
return (int) ans;
}
}
- 时间:148 ms,击败 100.00% 使用 C# 的用户
- 内存:4.38 MB,击败 60.00% 使用 C# 的用户