力扣刷题:合并两个有序数组

题目:

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = 1,2,3,0,0,0, m = 3, nums2 = 2,5,6, n = 3

输出:1,2,2,3,5,6

解释:需要合并 1,2,3 和 2,5,6 。 合并结果是 ***1*** ,***2*** ,2,***3***,5,6,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = 1, m = 1, nums2 = \[\], n = 0

输出:1

解释:需要合并 1 和 \[\] 。

合并结果是 1 。

示例 3:

输入:nums1 = 0, m = 0, nums2 = 1, n = 1

输出:1

解释:需要合并的数组是 \[\] 和 1。 合并结果是 1 。 注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0仅仅是为了确保合并结果可以顺利存放到 nums1 中。

解析:

1 定义好两个数组的非零最后一个元素的下标index1和index2,以及第一个数组的最大下标tail

2 当 index1、index2 都大于 0 的时候,将 nums1index1、nums2index2中较大的元素放入 nums1tail,同时相应的下标往前移一位,注意也要 tail--

3 当 index1、index2 有一个小于 0 之后,将另一个数组依次插入到 nums1 中就行,最后返回 nums1 即为结果。

具体代码:

javascript 复制代码
/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    let index1 = m -1
    let index2 = n-1
    let tail = m + n -1
    while(index1>=0 && index2>=0){
        if(nums1[index1] > nums2[index2]){
            nums1[tail] = nums1[index1]
            index1--
        }else {
            nums1[tail] = nums2[index2]
            index2--
        }
        tail--
    }
    while(index1>=0){
        nums1[tail] = nums1[index1]
        index1--
        tail--
    }
    while(index2>=0){
        nums1[tail] = nums2[index2]
        index2--
        tail--
    }
    return nums1
};
相关推荐
余额瞒着我当琳7 分钟前
C++算法学习篇5--二分查找法
c++·学习·算法
起个名字费劲死了18 分钟前
基于灰度/形状的2D模板匹配
算法
杜 硕24 分钟前
归并排序详解
数据结构·算法·排序算法
科技观察哨33 分钟前
国产纳米定位平台与精密位移台量产能力图谱(2026):Z轴压电、XYθZ、六自由度并联与光刻/检测/装配选型指南
网络·人工智能·算法
AIHR数智引擎1 小时前
蚂蚁350亿换不来智能体飞轮?拆中台和流水线
人工智能·经验分享·职场和发展·ai-native·aihr
鶴哥只手遮天2 小时前
《OpenFOAM 源码深度剖析》系列-第 3 章 字典系统、IO 体系与对象注册表
算法·开源
鶴哥只手遮天2 小时前
《OpenFOAM 源码深度剖析》系列-第 2 章 wmake:OpenFOAM 自研构建系统与编译配置体系
算法·开源
用户81849100742162 小时前
我把工位上的“AI牛马”养成了:一个技术人的 AiPy 实战手记
算法
Tisfy2 小时前
LeetCode 3727.最大交替平方和:排序 (双指针可选)
算法·leetcode·题解·贪心·数组·排序
鶴哥只手遮天2 小时前
《OpenFOAM 源码深度剖析》系列-第 9 章 有限体积离散框架:`fvMatrix`、`fvSchemes` 与 `fvSolution`
算法·开源