如何解决leetcode中合并两个有序数组的问题
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下如何解决leetcode中合并两个有序数组的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目链接h
千家信息网最后更新 2025年12月01日如何解决leetcode中合并两个有序数组的问题
小编给大家分享一下如何解决leetcode中合并两个有序数组的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目链接
https://leetcode-cn.com/problems/merge-sorted-array/
题目描述
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化
nums1和nums2的元素数量分别为m和n。你可以假设
nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
解题方案
思路
标签:从后向前数组遍历
因为
nums1的空间都集中在后面,所以从后向前处理排序的数据会更好,节省空间,一边遍历一边将值填充进去设置指针
len1和len2分别指向nums1和nums2的有数字尾部,从尾部值开始比较遍历,同时设置指针len指向nums1的最末尾,每次遍历比较值大小之后,则进行填充当
len1<0时遍历结束,此时nums2中海油数据未拷贝完全,将其直接拷贝到nums1的前面,最后得到结果数组时间复杂度:O(m+n)
代码
Java版本
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int len1 = m - 1;
int len2 = n - 1;
int len = m + n - 1;
while(len1 >= 0 && len2 >= 0) {
// 注意--符号在后面,表示先进行计算再减1,这种缩写缩短了代码
nums1[len--] = nums1[len1] > nums2[len2] ? nums1[len1--] : nums2[len2--];
}
// 表示将nums2数组从下标0位置开始,拷贝到nums1数组中,从下标0位置开始,长度为len2+1
System.arraycopy(nums2, 0, nums1, 0, len2 + 1);
}
}
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 len1 = m - 1;
let len2 = n - 1;
let len = m + n - 1;
while(len1 >= 0 && len2 >= 0) {
// 注意--符号在后面,表示先进行计算再减1,这种缩写缩短了代码
nums1[len--] = nums1[len1] > nums2[len2] ? nums1[len1--] : nums2[len2--];
}
function arrayCopy(src, srcIndex, dest, destIndex, length) {
dest.splice(destIndex, length, ...src.slice(srcIndex, srcIndex + length));
}
// 表示将nums2数组从下标0位置开始,拷贝到nums1数组中,从下标0位置开始,长度为len2+1
arrayCopy(nums2, 0, nums1, 0, len2 + 1);
};
画解


以上是"如何解决leetcode中合并两个有序数组的问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组
有序
下标
位置
拷贝
空间
两个
代码
篇文章
问题
元素
内容
大小
尾部
指向
指针
数据
版本
符号
缩写
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
万方数据资源专利数据库
全国学生网络安全教育平台
招行软件开发
关系数据库有几类完整性
php 单页 条数据库
苏州个人软件开发哪个好
福建中职计算机网络技术课程
dota2老搜索协调服务器
深圳以软件开发为主的公司
倍福软件开发工程师
如何安装手机自带的云服务器
青岛网络软件开发公司电话
属于计算机网络安全措施
软件开发常用组件有哪些
架设服务器犯法
重庆一站式网络技术包括什么
国外主流数据库管理系统简介
t6数据库补丁
数据库提供自增序列号
软件开发ba和bs的区别
游戏服务器到期了会怎么样
服务器中都有哪些类型的板卡
关于网络安全的宣传活动方案
光耀互联网信息科技
数据库定时任务表设计
倍福软件开发工程师
属于计算机网络安全措施
数据库 暗黑2
最简单的查询类型数据库
选数字媒体技术还是软件开发