《leetCode-php》合并两个有序数组

给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组 

注意: 

可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n

<?php
/**
 * @param $arrA
 * @param $m
 * @param $arrB
 * @param $n
 * 一开始在想要这个m和n干什么,直接从左向右插入就可以了,
 * 但是每插入一次就要把后面的所有元素向后平移,代价较高
 * 但是如果有m和n就可以确定A最后会变成一个多大的数组,直接从后往前搞就行了
 */
function merge($arrA, $m, $arrB, $n) {
    $i = $m - 1;
    $j = $n - 1;
    $x = $m + $n - 1;//merge后A的位置
    while ($i >= 0 || $j >= 0) {
        if (($i >= 0 && $arrA[$i] >= $arrB[$j]) || $j < 0) {
            $arrA[$x] = $arrA[$i];
            $i --;
        } else {
            $arrA[$x] = $arrB[$j];
            $j --;
        }
        $x --;
    }
    for ($k = 0; $k <= $m + $n -1; $k ++) {
        print $arrA[$k] . "\n";
    }
}
$arrA = [1,3,4,5,6];
$arrB = [7,8,9];
merge($arrA, 5, $arrB, 3);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值