当前位置: 面试刷题>> 排序数组中最接近元素 (经典算法题500道)


题目描述补充

题目:排序数组中最接近元素

给定一个已排序的整数数组 arr 和一个目标值 target,请找出数组中与目标值最接近的元素,并返回该元素的值。

注意

  • 数组 arr 已按非递减顺序(升序)排列。
  • 数组中可能含有重复元素。
  • 如果数组中有多个元素与目标值相同距离,则返回第一个找到的(即最左边的那个)。

示例

输入

arr = [1, 3, 5, 7]
target = 4

输出

3

PHP 示例代码

function findClosestElement($arr, $target) {
    $n = count($arr);
    $closest = $arr[0]; // 初始化最接近的元素为数组的第一个元素
    $minDiff = abs($arr[0] - $target); // 初始化最小差值为第一个元素与目标值的差的绝对值

    for ($i = 1; $i < $n; $i++) {
        $diff = abs($arr[$i] - $target);
        if ($diff < $minDiff) {
            $minDiff = $diff;
            $closest = $arr[$i];
        }
    }

    return $closest;
}

// 测试
$arr = [1, 3, 5, 7];
$target = 4;
echo findClosestElement($arr, $target); // 输出 3

Python 示例代码

def findClosestElement(arr, target):
    closest = arr[0]
    min_diff = abs(arr[0] - target)

    for num in arr[1:]:
        diff = abs(num - target)
        if diff < min_diff:
            min_diff = diff
            closest = num

    return closest

# 测试
arr = [1, 3, 5, 7]
target = 4
print(findClosestElement(arr, target))  # 输出 3

JavaScript 示例代码

function findClosestElement(arr, target) {
    let closest = arr[0];
    let minDiff = Math.abs(arr[0] - target);

    for (let i = 1; i < arr.length; i++) {
        let diff = Math.abs(arr[i] - target);
        if (diff < minDiff) {
            minDiff = diff;
            closest = arr[i];
        }
    }

    return closest;
}

// 测试
let arr = [1, 3, 5, 7];
let target = 4;
console.log(findClosestElement(arr, target)); // 输出 3

码小课提醒

以上代码分别用 PHP、Python 和 JavaScript 实现了在已排序数组中查找与目标值最接近的元素的功能。在码小课网站上,你可以找到更多关于算法和数据结构的学习资源,帮助你提升编程能力。

推荐面试题