[C++] 牛客网:合并两个有序的数组

本文介绍了如何在C++中合并两个有序数组,通过双指针和sort函数实现。题目要求不返回合并后的数组,而是直接在A数组中合并B数组并排序。解题代码中展示了如何利用sort对合并后的数组进行排序,从而得到一个有序的数组A。
摘要由CSDN通过智能技术生成

主要是体验一下牛客网里的核心代码模式到底是怎么弄的。。还有C++这个东西平常用的太少了,试一试。
以外的还体验到了sort()函数的使用。
来源:牛客网
题目链接:合并两个有序的数组
知识点:数组、双指针

描述

给出一个整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组

数据范围:
,,

注意:

  1. 保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
  2. 不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了
  3. A 数组在[0,m-1]的范围也是有序的

例1:

A: [4,5,6,0,0,0],m=3
B: [1,2,3],n=3
合并过后A为:
A: [1,2,3,4,5,6]

示例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]

思路

主要是体验一下牛客网上的核心代码模式到底是怎么操作的,还有C++。
这题应该算是很简单了,不过居然没有#include<cstring>就不能用strcat的方法。本来想一个strcat和一个sort()光速解决问题,没想到还是要手动连接。
本质上就是连接之后进行一个排序,注意这里要破坏原数组A,返回值是void(就是说它直接输出你破坏掉的A)。
sort()的使用:

sort(A, A + m + n);

解题代码

class Solution {
public:
    void merge(int A[], int m, int B[], int n) {
        int i, j;
        j = 0;
        for (i = m; i < m + n; i++) {
            A[i] = B[j];
            j++;
        }
        sort(A, A + m + n);
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值