LeetCode 88. 合并两个有序数组(Merge Sorted Array)

merge-sorted-array(合并已排序的数组) 题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assume that A has enough space to hold additional elements from B. The number of elements initialized in... 阅读详情

 首先,这个题中给出的函数没有返回值,所以就意味着我们不能另建一个数组来做合并!

第一种思路:

第一步:比较nums1和nums2,使nums2最小值大于nums1的最大值,而在这个过程要保持nums2有序!

第二步:把nums2加到nums1后面。

代码:

nums1中有1个元素时,保证nums2最小值大于nums1的最大值;

nums1中有2个元素时,保证nums2最小值大于nums1的最大值;

。。。

nums1中有m个元素时,保证nums2最小值大于nums1的最大值;

在这个过程中保持nums2有序!

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        //如果nums2为空
        if (n == 0) return;
        //如果nums2不为空
        int k = 0;
        int i = 0;
        for (i = 0; i < m; i++){
            while (nums1[i] > nums2[0]){
                k = 0;
                while (k < n && nums1[i] > nums2[k]){
                    k++;
                }
                int temp = nums1[i];
                nums1[i] = nums2[k-1];
                nums2[k-1] = temp;
            }
        }
        k = 0;
        while (k < n){
            nums1[i++] = nums2[k++];
        }
    }
};

第二种思路:利用nums1中的后半部分空间。

第一种思路有一个很明显的问题没有利用nums1的后半部分0元素空间,而是在前半部分做了大量交换。

思路:

从最大值开始填,这样就可以避免在nums1和nums2中做交换。

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i = m - 1;
        int j = n - 1;
        for (; i >= 0 && j >= 0;) {
            if (nums1[i] >= nums2[j]) {
                nums1[i + j + 1] = nums1[i];
                i--;
            } else {
                nums1[i + j + 1] = nums2[j];
                --j;
            }
        }
        if (j >= 0) {
            for (; j >= 0; --j) {
                nums1[j] = nums2[j];
            }
        }
    }
};

 

Merge Sorted Array合并排序数组leetcode Merge Sorted Array 合并 排序 数组 leetcode 立即下载

相关推荐

OpenNI获取三维点云并用OpenGL显示(可旋转缩放)

用的xtion(kinect也相同)和openni获取深度数据,转换为三维点云后在opengl中表示(用彩色数据作纹理),可用鼠标和键盘对三维点云进行旋转与缩放。

Merge Sorted Array

题目名称 Merge Sorted Array—LeetCode链接描述 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: You may assume that nums1 has enough space (size that is greate

494

《深入浅出图神经网络:GNN原理解析》学习笔记

期末考完了,该上道了 目录一、图的概述1.基本概念2.图的存储和遍历3.应用分类二、神经网络基础1.机器学习2.神经网络三、卷积神经网络(CNN)1.卷积与池化2.卷积神经网络四、表示学习1.意义2.自编码器五、图信号处理与图卷积神经网络1.矩阵计算前置知识2.图信号与图的拉普拉斯矩阵3.图傅里叶变换4.图滤波器(Graph Filter)5.图卷积神经网络(GCN) 一、图的概述 1.基本概念 1.顶点(Vertex)表示研究的对象,边(Edge)表示两个对象之间特定的研究关系 2.图为顶点和边的集合.

且视他人之疑目如盏盏鬼火,大胆地去走你的夜路 2048

【LeetCode 算法】Merge Sorted Array 合并两个有序数组

注意指针的移动,别越界,当一个指针小于0时,就可以单独处理另一个指针。**注意:**最终,合并后数组不应由函数返回,而是存储在数组。个元素表示应合并的元素,后。中,使合并后的数组同样按。常见的处理方式,就不赘述了。先说结论,从尾部进行双指针。整个过程可以看成是一个。

Cui's Blog 483

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4731

科技英语/专业英语——改错总结【2】

1.固定句式 make it + adj + 句子 例:These features make the electronic systems difficult to intercept this kind of signal. 正确形式:These features make it  difficult for the electronic systems  to intercept

MISAYAONE的博客 1732

数据结构与算法应用(六):Merge Sorted Array

Merge two given sorted integer array A and B into a new sorted integer array. (合并两个排好序的数组) 样例 A=[1,2,3,4] B=[2,4,5,6] return [1,2,2,3,4,4,5,6] 挑战 Expand How can you optimize your algorithm

风的专栏 1441

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1672

leetcode笔记:Merge Sorted Array

Merge Sorted Array这道题没有很复杂的算法,只是一个技巧问题。如果单纯得考虑从小到大地将两个数组进行合并的话,每次在num1中插入一个数的话,需要将后面的元素都向后移动一位,这样,整个处理过程的时间复杂度为O(m*n)。

liyuefeilong的专栏 1373

【SAP ME 3】JAVA 调用SAP PO WebService

Java调用SAP PO/PI WebService接口

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 847

【WRF实操】四层嵌套网格设计-以粤港澳大湾区GBA为例

四层嵌套网格设计-以粤港澳大湾区GBA为例

WW、forever的博客 820

【力扣算法 LeetCode】88. Merge Sorted Array合并两个有序数组

文章目录前言一、题目二、解答1.代码2.复盘总结 前言 题目出自力扣 算法练习题:合并两个有序数组 一、题目 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表

南迁的博客 368

苏宁易购手机行情比价系统:构建一个完整的Python爬虫实战指南

在当今数字化时代,智能手机已成为人们生活中不可或缺的一部分。随着各大手机品牌每年推出多款新品,消费者面临着越来越多的选择。然而,不同电商平台、不同时间段的价格波动使得消费者很难把握最佳购买时机。苏宁易购作为国内领先的电商平台之一,拥有丰富的手机商品信息和价格数据。本文将带领读者构建一个完整的苏宁易购手机行情比价系统,帮助消费者实时掌握手机价格动态。

2201_76125261的博客 207

LeetCode力扣 88. 合并两个有序数组 Merge Sorted Array 题解代码 JavaScript

问题https://leetcode-cn.com/problems/merge-sorted-array/ 练习使用JavaScript解答 /** * @param {number[]} nums1 * @param {number} m * @param {number[]} nums2 * @param {number} n * @return {void} Do not return anything, modify nums1 in-place instead. */ var.

Coding home - 漂流瓶jz 561

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode 88. 合并两个有序数组 Merge Sorted Array

Table of Contents 一、中文版 二、英文版 三、My answer 四、解题报告 一、中文版 给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。 说明: 初始化nums1 和 nums2 的元素数量分别为m 和 n 。 你可以假设nums1有足够的空间(空间大小大于或等于m...

三妹的博客 413

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode 88 - Merge Sorted Array 合并有序数组

简单算法练习 & 运算符优先级

欢迎来到超级予的博客 Welcome to SuperAyu's Blog 438

Leetcode 88 Merge Sorted Array 合并两个有序数组

题目描述:Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additi...

yuweiming70的博客 273

【LeetCode 面试经典150题】88. Merge Sorted Array 合并两个有序数组

这个问题的关键在于从后向前合并两个数组,这样可以避免在合并时覆盖nums1中未处理的元素。由于nums1的大小足以容纳两个数组合并后的所有元素,因此可以在不需要额外空间的情况下完成合并。通过从两个数组的末尾开始比较,可以确保在合并时不会丢失任何元素,并且每个元素只需要移动一次。当其中一个数组的元素全部被合并后,如果另一个数组还有剩余元素,这些元素可以直接复制到nums1的相应位置。public:// 合并两个有序数组nums1, nums2// index 指向nums1数组末尾。

qq_43513394的博客 1126

LeetCode 88.Merge Two Sorted Array 合并两个有序数组

题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 ...

it-hao的博客 301

【LeetCode-Java实现】88. Merge Sorted Array 合并两个有序数组

88. Merge Sorted Array合并两个有序数组题目描述思路实现 题目描述 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: The number of elements initialized in nums1 and nums2 are...

IT Crowd的博客 286

LeetCode【#88】Merge Sorted Array(合并两个有序数组)

题目链接: 点击跳转 题目: Given two sorted integer arraysnums1andnums2, mergenums2intonums1as one sorted array. Note: The number of elements initialized innums1andnums2aremandnrespectivel...

Mikchy的博客 320

[leetcode] 88. Merge Sorted Array 合并有序数组

题目描述: Given two sorted integer arraysnums1andnums2, mergenums2intonums1as one sorted array. Note: The number of elements initialized innums1andnums2aremandnrespectively. You may as...

T2777的博客 193

LeetCode 88. Merge Sorted Array-合并两个有序数组(JAVA)

题目理解Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additio...

luopeipei的博客 1623

LeetCode:88.Merge Sorted Array 合并两个有序数组(C语言)

题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums...

C/C++攻城狮 294
上一篇: linux下无root权限使用yum安装的方法
下一篇: Ubuntu中文输入法崩溃问题(候选框乱码)
君只见独不见
博客等级 码龄12年 99粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值