《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);
发布了284 篇原创文章 · 获赞 32 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/less_cold/article/details/102451516
今日推荐