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

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。
初始化 A 和 B 的元素数量分别为 m 和 n。

示例:

输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3

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

方法一:

class Solution {
public:
    void merge(vector<int>& A, int m, vector<int>& B, int n) {
        int C=m;
        for(int i=0;i<n;++i){
           A[C++]=B[i];
        }
        sort(A.begin(),A.begin()+n+m);
        for(int i=0;i<m+n;++i){
            printf("%d ",A[i]);
        }
        printf("\n");
    }
};

执行用时 :4 ms, 在所有 C++ 提交中击败了78.97%的用户

内存消耗 :11.6 MB, 在所有 C++ 提交中击败了100.00%的用户


方法二:

class Solution {
public:
    void merge(vector<int>& A, int m, vector<int>& B, int n) {
        for(int i=0;i<B.size();i++)
        A.pop_back();
        A.insert(A.begin(),B.begin(),B.end());
        sort(A.begin(),A.end());
    }
};

执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户

内存消耗 :11.5 MB, 在所有 C++ 提交中击败了100.00%的用户

posted @   RioTian  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
点击右上角即可分享
微信分享提示