当前位置: 面试刷题>> 插入5 (经典算法题500道)
### 完整题目描述
**题目**: 插入数字5
给定一个已排序的数组(升序),请在不使用额外数组空间的情况下,将数字5插入到数组中,并保持数组的有序性。如果数组中存在数字5,则不需要插入,直接返回原数组。请分别用PHP、Python、JavaScript实现这一功能。
### 示例
**输入**: `[1, 3, 4, 6, 8]`
**输出**: `[1, 3, 4, 5, 6, 8]`
如果输入数组中包含5:
**输入**: `[1, 3, 4, 5, 6, 8]`
**输出**: `[1, 3, 4, 5, 6, 8]`(保持不变)
### PHP 示例代码
```php
function insertFive($arr) {
$n = count($arr);
$found = false;
// 检查数组中是否已存在5
for ($i = 0; $i < $n; $i++) {
if ($arr[$i] == 5) {
$found = true;
break;
}
}
// 如果不存在,则在适当位置插入5
if (!$found) {
$arr[] = 5; // 默认插入到数组末尾
$inserted = false;
for ($i = $n - 1; $i >= 0 && !$inserted; $i--) {
if ($arr[$i] > 5) {
$arr[$i + 1] = $arr[$i]; // 向后移动元素
} else {
$arr[$i + 1] = 5; // 插入5
$inserted = true;
}
}
}
return $arr;
}
// 测试
$arr = [1, 3, 4, 6, 8];
$result = insertFive($arr);
print_r($result);
```
### Python 示例代码
```python
def insert_five(arr):
if 5 not in arr:
arr.append(5) # 默认添加到末尾
i = len(arr) - 2
while i >= 0 and arr[i] > 5:
arr[i + 1] = arr[i]
i -= 1
arr[i + 1] = 5
return arr
# 测试
arr = [1, 3, 4, 6, 8]
result = insert_five(arr)
print(result)
```
### JavaScript 示例代码
```javascript
function insertFive(arr) {
if (!arr.includes(5)) {
arr.push(5); // 默认添加到末尾
for (let i = arr.length - 2; i >= 0 && arr[i] > 5; i--) {
arr[i + 1] = arr[i]; // 向后移动元素
}
arr[i + 1] = 5; // 插入5
}
return arr;
}
// 测试
let arr = [1, 3, 4, 6, 8];
let result = insertFive(arr);
console.log(result);
```
### 码小课网站分享
码小课网站中有更多关于算法和数据结构的内容分享,涵盖了从基础到进阶的各种知识点和实战案例,非常适合学习和提升编程技能。欢迎访问码小课网站,与众多编程爱好者一起学习和进步!