当前位置: 面试刷题>> 插入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 示例代码

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 示例代码

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 示例代码

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);

码小课网站分享

码小课网站中有更多关于算法和数据结构的内容分享,涵盖了从基础到进阶的各种知识点和实战案例,非常适合学习和提升编程技能。欢迎访问码小课网站,与众多编程爱好者一起学习和进步!

推荐面试题