力扣_数组26—合并两个有序数组

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

思路

  • 双指针
    • 新建一个数组,以及两个指针,分别指向 n u m s 1 , n u m s 2 nums1, nums2 nums1,nums2 起始位置
    • 比较 n u m s 1 [ p 1 ] nums1[p1] nums1[p1] n u m s 2 [ p 2 ] nums2[p2] nums2[p2] 将小的放入新建的数组中,并将指针加 1 1 1
    • 把新建的数组赋给 n u m s 1 nums1 nums1
  • 降低空间复杂度
    • 倒序比较可以防止覆盖
    • 初始化三个指针: p 1 = m − 1 , p 2 = n − 1 , p = m + n − 1 p1=m-1, p2=n-1,p=m+n-1 p1=m1,p2=n1,p=m+n1
    • 比较 n u m s 1 [ p 1 ] nums1[p1] nums1[p1] n u m s 2 [ p 2 ] nums2[p2] nums2[p2] 将大的放入 n u m s [ p ] nums[p] nums[p],并将指针减 1 1 1

代码

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14. C++ malloccallocrecalloc

一、malloc函数 谈到malloc函数相信学过c语言的人都很熟悉&#xff0c;但是malloc底层到底做了什么又有多少人知道。 1.1 关于malloc相关的几个函数 可以这样认为&#xff08;window下&#xff09;原型&#xff1a; extern void *malloc(unsigned int num_bytes);如果分配成…

怎么用 Excel 做出专业的 project 甘特图?10个步骤和60个模板

使用Excel来创建Project甘特图的步骤包括&#xff1a;1、基本设置和布局调整、2、数据输入和时间线配置、3、任务依赖性和进度跟踪、4、视觉效果优化、5、数据更新和维护、6、模板保存和共享。尤其突出基本设置和布局调整&#xff0c;它是构建一个清晰、有效的甘特图的基础。 甘…

基于龙格库塔算法的SIR病毒扩散预测matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于龙格库塔算法的SIR病毒扩散预测,通过龙格库塔算法求解传染病模型的微分方程。输出易受感染人群数量曲线&#xff0c;感染人群数量曲线&#xff0c;康复人群数…

CAS-ABA问题编码实战

多线程情况下演示AtomicStampedReference解决ABA问题 package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicStampedReference;/*** @author zho…

如何使用自定义注解

1、自定义注解需要用到那些元注解 1、Retention 2、Target 3、Documented 4、Inherited 2、元注解解释说明 Retention&#xff1a;表示需要在什么级别保存该注释消息&#xff0c;可选参数如下&#xff1a;&#xff08;RetentionPoicy&#xff09; RetentionPolicy.SOURCE&…

nextjs + ahooks 报错 Cannot use import statement outside a module

在 nextjs 中使用 ahooks 时&#xff0c;报错 SyntaxError: Cannot use import statement outside a module&#xff0c;如下图所示&#xff1a; 解决方案 transpilePackages 官网介绍 Next.js can automatically transpile and bundle dependencies from local packages (lik…

【Flutter 开发实战】Dart 基础篇:常见的数据类型

Dart 支持许多数据类型&#xff0c;包括我们常见的 Numbers&#xff08;数值类型&#xff09;、Strings&#xff08;字符串类型&#xff09;、Booleans&#xff08;布尔类型&#xff09;&#xff0c;也支持一些包括 Collections&#xff08;集合类型&#xff09;、Records&…

idea编译报错(Maven项目)

idea编译报错 找不到符号 第一步&#xff1a;开启注解处理器 第二步&#xff1a;清理MVN&#xff0c;package并重新编译 第三步&#xff1a;重新导入项目&#xff1a;

04.C++模板笔记

1、模板 ①与具体类型无关的代码&#xff1a;泛型编程 ②模板的使用格式&#xff1a; 一个类型&#xff1a;template<typename T> 或者template<class T> 多个类型&#xff1a;template<typename T1,typename T2>或者template<class T1,class T2>…

遇到的各种问题

软件 mpv倍速等功能问题 typora字数过多卡顿原因 node.js安装教程 pycharm模板——模版会在新建文件的时候&#xff0c;自动添加到文件内容里插件——如何下载插件&#xff0c;有哪些推荐插件 mpv 倍速等功能问题 官网有快捷键&#xff1a;https://mazhuang.org/wiki/mpv/ t…

vue element-ui的table列表中展示缩略图片效果实例

这篇文章主要给大家介绍了关于vue element-ui的table列表中展示多张图片(可放大)效果的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下 一、效果图 二、代码部分 1、原理 使用 <el-table-column> 和 <el-image> 组件来在表格中插入缩略图 2、te…

杨中科 .NETCORE NuGet

一 简介 Zack.EFCore.Batch 使用这个开发包Entity Framework Core用户可以使用LINQ语句删除或者更新多条数据库记录&#xff0c;操作只执行一条SQL语句并且不需要首先把实体对象加载到内存中。这个开发包支持Entity Framework Core 5.0以及更高版。 操作说明: 第一步 Install-…

diffusers flask streamlit 简洁可视化文生图页面

参考: https://python-bloggers.com/2022/12/stable-diffusion-application-with-streamlit/ https://github.com/LowinLi/stable-diffusion-streamlit 项目结构 本项目很简洁,暂时每次只能返回一张图片;gpu资源T4 16g;测试下来基本也只能支持同时一个人使用 flask:作为…

程序员英语 - 英文会议常用句型

相信大部分程序员都会有如下经历&#xff1a; 产品经理&#xff08;BA&#xff09;们在和外系统聊集成方案时或者给用户解决某个问题时发现搞不定了&#xff0c;这个时候就会拉上程序员一起上会参与讨论或者排查问题&#xff0c;但程序员们英文又不好&#xff0c;上了会又听不懂…

腾讯NUS推出下一代多模态智能,支持2/3D视觉、听觉、触觉、脑电

多模态感知一直是通用人工智能发展的关键领域。理想中的智能体能像人类一样感知多种模态信息&#xff0c;如视觉、听觉、嗅觉、触觉等&#xff0c;并与用户进行自然交互。然而&#xff0c;现有的大型模型虽然在图像和文字上表现出色&#xff0c;但对其他模态&#xff08;如3D点…

操作系统 内存相关

0 内存 cpu和内存的关系 内存覆盖 内存的覆盖是一种在程序运行时将部分程序和数据分为固定区和覆盖区的技术。这种技术的主要目的是为了解决程序较大&#xff0c;无法一次性装入内存导致无法运行的问题。 具体来说&#xff0c;内存的覆盖技术将用户空间划分为以下两个部分&…

基于51单片机的数字时钟系统设计

标题&#xff1a;基于51单片机的数字时钟系统设计与实现 摘要&#xff1a; 本文主要研究和实现了基于STC89C51单片机的数字时钟系统&#xff0c;该系统具有显示实时日期和时间、设置调整时间和闹钟提醒等功能。论文首先对系统需求进行分析&#xff0c;然后详细介绍了系统的硬件…

c++一些使用频率较高的库函数

目录 memset&#xff08;&#xff09; memset&#xff08;&#xff09;接受三个参数&#xff1a; 注意 swap&#xff08;&#xff09; reverse&#xff08;&#xff09; reverse函数接收两个参数&#xff1a; reverse&#xff08;&#xff09;反转整形向量元素顺序示例 …

Qt QSpinBox微调框控件

文章目录 1 属性和方法1.1 值1.2 步长1.3 循环1.4 加速1.5 前缀和后缀1.6 信号和槽 2 实例2.1 布局2.2 代码实现 微调框&#xff0c;允许用户按照一定的步长&#xff0c;来增加或减少其中显示的数值 修改微调框数值的方式包括&#xff1a; 单击右侧的向上/向下按钮按键盘的向上…

LINUX——动/静态库

加油加油~ 目录&#xff1a; 动/静态库是什么&#xff1f; .o文件是什么&#xff1f; 以gcc编译器为例&#xff0c;查看xxx.i xxx.s xxx.o文件 生成test.i文件(预处理) 生成test.s文件(编译) 生成test.o文件(汇编) 生成可执行程序(链接)&#xff1a; 小结&#xff1a…