面试题 16.06. 最小差

面试题 16.06. 最小差

给定两个整数数组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 { /** * @param Integer[] $a * @param Integer[] $b * @return Integer */ function smallestDifference($a, $b) { sort($a); sort($b); list($la, $lb)= [count($a), count($b)]; $m = 2147483647; $i = $j = 0; while ($i < $la && $j < $lb) { if ($a[$i] < $b[$j]) { $m = min([$b[$j]-$a[$i], $m]); $i += 1; }else { $m = min([$a[$i]-$b[$j], $m]); $j += 1; } } return $m; } }

本文链接:http://www.itarvin.com/detail-211.aspx

登录或者注册以便发表评论

登录

注册