首页 > 试题广场 >

合并两个有序的数组

[编程题]合并两个有序的数组
  • 热度指数:255963 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组

数据范围:

注意:
1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且后台会自动将合并后的数组 A 的内容打印出来,所以也不需要自己打印
3. A 数组在[0,m-1]的范围也是有序的
示例1

输入

[4,5,6],[1,2,3]

输出

[1,2,3,4,5,6]

说明

A数组为[4,5,6],B数组为[1,2,3],后台程序会预先将A扩容为[4,5,6,0,0,0],B还是为[1,2,3],m=3,n=3,传入到函数merge里面,然后请同学完成merge函数,将B的数据合并A里面,最后后台程序输出A数组            
示例2

输入

[1,2,3],[2,5,6]

输出

[1,2,2,3,5,6]
头像 GhostLX
发表于 2021-06-16 16:45:58
精华题解 @TOC 一、题目描述 NC22合并两个有序的数组原题链接https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=117题目大意:给定递增数组A,B,合并A,B的元素,使合并过后的数组是递增的,并且存放在数组A中 展开全文
头像 漫漫云天自翱翔
发表于 2021-07-16 01:59:22
精华题解 题解一:从尾部开始合并 图示:复杂度分析: 时间复杂度:O(M+N) 空间复杂度:O(1)实现如下: class Solution { public: void merge(int A[], int m, int B[], int n) { int end 展开全文
头像 牛客题解官
发表于 2021-01-14 16:21:22
精华题解 视频题解 文字题解 从后往前看,在每一个位置上选择A和B中较小的那一个 c++版本代码: class Solution { public: void merge(int A[], int m, int B[], int n) { 展开全文
头像 牛客题解官
发表于 2022-04-22 13:00:05
精华题解 题目主要信息: A与B是两个升序的整型数组,长度分别为nnn和mmm 需要将数组B的元素合并到数组A中,保证依旧是升序 数组A已经开辟了m+nm+nm+n的空间,只是前半部分存储的数组A的内容 举一反三: 学习完本题的思路你可以解决如下题目: BM4. 合并两个有序链表 BM88. 判断是否是回 展开全文
头像 Gemini48
发表于 2021-07-11 16:49:54
精华题解 解法一:合并后排序 思路步骤: 对原数组A,B进行合并 将合并后的数组A进行排序 java参考代码: import java.util.*; public class Solution { public void merge(int A[], int m, int B[], int n) 展开全文
头像 认认真真coding
发表于 2021-07-15 11:28:20
精华题解 题目描述给出一个整数数组A和有序的整数数组B,请将数组B合并到数组A中,变成一个有序的升序数组注意:1.可以假设A数组有足够的空间存放B数组的元素,A和 B中初始的元素数目分别为m和n,A的数组空间大小为m+n2.不要返回合并的数组,返回是空的,将数组B的数据合并到A里面就好了3.A数组在[0,m- 展开全文
头像 麻豆出品
发表于 2020-09-06 00:14:47
归并排序的套路,按照下面套路来就完事了。思路: 双指针从A和B的m、n尾部遍历 比较A和B的m、n尾部的值,将较大值赋给A整体数组的尾部,指针左移 注意特殊情况处理:A的尾指针已遍历结束,B尾指针还未结束。 代码: # @param A int整型一维数组 # @param B int整型一维 展开全文
头像 小洋芋热爱NLP
发表于 2020-12-22 16:28:31
- 1、题目描述:- 2、题目链接:https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=117&&tqId=34943&rp=1&ru=/ta/job-code-high&am 展开全文
头像 文卿周槐芳
发表于 2020-11-02 14:54:11
照例记录下思路。 依然双指针,要求归并至 A 数组,考虑逆向归并,比较 A、B 尾部元素,大的从 A 数组索引 (A.length + B.length - 1) 开始逆向放置。最后刚好排满。 public void merge(int A[], int m, int B[], int n) { 展开全文
头像 数据结构和算法
发表于 2021-03-18 23:49:20
1,参照归并排序 可以参照归并排序,具体可以看下《排序-归并排序》 public void merge(int[] nums1, int m, int[] nums2, int n) { int temp[] = new int[m + n]; int ind 展开全文
头像 CallMe帅
发表于 2022-01-16 13:19:30
教你用两行代码解决这个问题 直接上代码 public class Solution { public void merge(int A[], int m, int B[], int n) { System.arraycopy(B,0,A,m,n); Arr 展开全文
头像 华科不平凡
发表于 2020-09-24 14:51:49
双指针法,从A、B数组的末尾开始遍历,将较大者保存到另一个指针指向的新A数组的末尾: // // Created by jt on 2020/9/24. // class Solution { public: void merge(int A[], int m, int B[], int n 展开全文
头像 内推荐秒回
发表于 2020-09-04 08:36:13
采用归并的思路解决这个问题 public class Solution { public void merge(int A[], int m, int B[], int n) { int[] result=new int[m+n]; int t=0; 展开全文
头像 牛客570486753号
发表于 2021-09-22 23:05:04
# # # @param A int整型一维数组 # @param B int整型一维数组 # @return void # class Solution: def merge(self , A, m, B, n): A[m:m+n] = B retur 展开全文
头像 云小逸0987
发表于 2022-09-30 21:52:41
在本篇文章里,我将分享一道很经典的算法题———合并两个有序的数组,并且分享解题思路,希望可以帮助到你😀😀😀 合并两个有序的数组_牛客题霸_牛客网 以下代码均经过牛客测试,均正确,请放心测试😊😊😊 解题思路: 设一个 展开全文
头像 HovingHuang
发表于 2022-04-09 16:36:33
/** * 解法一:JS Sort * 思路: * (1)先判断 B 为空直接 return,A 为空则将 B shift 到 A 中 * (2)将 B shift 填到 A 尾部的扩容区域,然后用 sort 排序 * 时间复杂度:O(nlogn), JS sort 方法基于快速排序实现 展开全文

问题信息

难度:
482条回答 29663浏览

热门推荐

通过挑战的用户