程序员面试金典---21

楸枰~ / 2023-05-04 / 原文

最小差

思路:

先将两个数组升序排序,然后使用双指针逐个进行比较。

/**
 * @param {number[]} a
 * @param {number[]} b
 * @return {number}
 */
var smallestDifference = function(a, b) {
    a.sort((a, b) => a - b)
    b.sort((a, b) => a - b)
    const lenA = a.length
    const lenB = b.length
    let l = 0, r = 0, min = Number.MAX_VALUE
    console.log(min)
    while(l < lenA && r < lenB){
        min = Math.min(min, Math.abs(a[l] - b[r]))

        if(a[l] > b[r]){
            r++
        }else{
            l++
        }
    }
    return min
};

最大数值

思路:

数学上,两个数最大的那个为:

\[max(a,b) = (|a-b| + a + b) / 2 \]

/**
 * @param {number} a
 * @param {number} b
 * @return {number}
 */
var maximum = function(a, b) {
    return (Math.abs(a - b) + a + b) / 2
};