Leetcode 88. 合并两个有序数组 双指针

地址 https://leetcode-cn.com/problems/merge-sorted-array/

复制代码
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。

初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。

 

示例 1:

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

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
 

提示:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[i] <= 109
复制代码

解答1 

由于数组是有序的 所以新开一个数组,使用两个指针指向两个数组的当前需要处理的点

根据数的大小 决定处理哪个数. 过程如下

代码

复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> ans;
        int l=0;int r=0;
        while(l<m && r < n){
            if(nums1[l] <= nums2[r]){
                ans.push_back(nums1[l]);l++;
            }else{
                ans.push_back(nums2[r]);r++;
            }
        }
        while(l<m){
            ans.push_back(nums1[l]);l++;
        }
        while(r<n){
            ans.push_back(nums2[r]);r++;
        }
        
        nums1 =ans;
        return;
    }
};
复制代码

 

同样的 可以直接使用NUMS1 作为存储的数组 逆序比较即可

如图

posted on   itdef  阅读(124)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示