当前位置: 面试刷题>> 排序数组中最接近元素 (经典算法题500道)
### 题目描述补充
**题目:排序数组中最接近元素**
给定一个已排序的整数数组 `arr` 和一个目标值 `target`,请找出数组中与目标值最接近的元素,并返回该元素的值。
**注意**:
- 数组 `arr` 已按非递减顺序(升序)排列。
- 数组中可能含有重复元素。
- 如果数组中有多个元素与目标值相同距离,则返回第一个找到的(即最左边的那个)。
### 示例
**输入**:
```
arr = [1, 3, 5, 7]
target = 4
```
**输出**:
```
3
```
### PHP 示例代码
```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 示例代码
```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 示例代码
```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 实现了在已排序数组中查找与目标值最接近的元素的功能。在码小课网站上,你可以找到更多关于算法和数据结构的学习资源,帮助你提升编程能力。