前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 88. 合并两个有序数组

LeetCode 88. 合并两个有序数组

作者头像
Michael阿明
发布2022-11-26 10:22:24
2540
发布2022-11-26 10:22:24
举报

文章目录

1. 题目信息

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

代码语言:javascript
复制
示例:

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

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

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-sorted-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

很简单的题目

  • 用两个位置标记分别指向两个数组的首部
  • 比较大小,小的插入nums1的尾部,并挪动标记+1
  • 最后其中一个插入完了,剩余的一个直接补在nums1尾部
  • 删除nums1的前面原始数据
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int n1 = nums1.size();
        int idx1 = 0, idx2 = 0;
        while(idx1 < m && idx2 < n)
        {
            if(nums1[idx1] < nums2[idx2])
                nums1.push_back(nums1[idx1++]);
            else
                nums1.push_back(nums2[idx2++]);
        }
        if(idx1 == m)
        {
            while(idx2 < n)
                nums1.push_back(nums2[idx2++]);
        }
        else//(idx2 == n)
        {
            while(idx1 < m)
                nums1.push_back(nums1[idx1++]);
        }
        nums1.erase(nums1.begin(),nums1.begin()+n1);
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目信息
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档