本文主要是介绍LeetCode 面试题 16.06. 最小差,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、题目
- 二、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 更小的结果了。
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. 最小差的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!