一、题目
给定两个整数数组 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]
内
点击此处跳转题目。文章来源:https://www.toymoban.com/news/detail-718789.html
二、C# 题解
将两个数组排序,依次比较最临近的两个数的差值。每次取较小的那个数前进一位。如果两个数相等,则直接返回 0,因为没有比 0 更小的结果了。文章来源地址https://www.toymoban.com/news/detail-718789.html
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# 的用户
到了这里,关于LeetCode 面试题 16.06. 最小差的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!