面试题 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;
    }
}

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

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

登录

注册