面试题 10.01. 合并排序的数组

题目

面试题 10.01. 合并排序的数组

思路

逆向双指针,从尾部开始填充数组

代码

逆向双指针:注意这里其实是有四个不同的状态的
状态1: A的指针到了-1 , 也就是说A已经遍历完了
状态2: B的指针到了-1,也就是说B已经遍历完了
状态3: A、B都没有遍历完,A >= B
状态4: A、B都没有遍历完,A < B

/**
 * @param {number[]} A
 * @param {number} m
 * @param {number[]} B
 * @param {number} n
 * @return {void} Do not return anything, modify A in-place instead.
 */
var merge = function(A, m, B, n) {
    //逆向双指针
    let a = m - 1;
    let b = n - 1;
    let end = m + n - 1;
    let cur;

    while(end >= 0){
        if (a === -1 || A[a] < B[b]){
            cur = B[b--];
        }else{
            cur = A[a--];
        }
        A[end--] =cur;
    }
    return A;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值