【LeetCode】合并两个有序数组

88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6] 解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6]
,其中斜体加粗标注的为 nums1 中的元素。

先贴我写的代码,然后进行分析:

    public void merge(int[] nums1, int m, int[] nums2, int n) {//使用归并排序int k = m + n - 1;m--;n--;while (m > -1 && n > -1) {nums1[k--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];}//当某个数组遍历完成时while (m > -1) nums1[k--] = nums1[m--];while (n > -1) nums1[k--] = nums2[n--];}

思路介绍

首先思想是归并排序,这道题从前往后归并和从后往前归并都可以,本代码用的是从后往前归并

  • 首先从后往前判断两个数组的最后一个元素谁大
  • 将大的元素赋值给num1的最后位置
  • 指针++

优化点

注意到下面的两个while循环了吗?
其实第一个循环式没有必要的,试想一下:

  • 如果此时nums1数组先被遍历完,那直接执行第二个循环了
  • 如果nums2先遍历完,那刚好num1没遍历的直接在nums1数组最前面的相应位置,直接输出就行

同时,能不能再极限一点,把k这个变量删掉呢?

  • 第一个大循环中,直接用n+m-1代替k
  • 最后的那个循环可以这样写: while (n > -1) nums1[n--] = nums1[n];

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

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

相关文章

3-zookeeper之ZAB协议

Zookeeper ZAB协议 概述 ZAB(Zookeeper Automic Broadcast)是一套专门为Zookeeper设计的用于进行原子广播和崩溃恢复的协议ZAB协议主要包含了两个功能 原子广播:保证数据一致性崩溃恢复:保证集群的高可用 ZAB协议本身是基于2PC算法来进行的设计&#…

Redis 红锁:分布式锁的强大实现

在分布式系统中,多个进程或线程可能需要并发访问共享资源。为了确保数据的一致性和正确性,我们需要一种分布式锁机制来协调这些访问。Redis 红锁就是这样一种强大的分布式锁实现。 一、分布式锁的概念 分布式锁是一种用于在分布式系统中实现资源互斥访…

U盘位置不可用,如何轻松应对数据恢复难题

在日常工作和生活中,U盘作为一种便捷的存储设备,经常被用于数据传输和备份。然而,有时我们可能会遇到这样一个问题:当插入U盘时,系统提示“位置不可用”或“无法访问”,这让人倍感困扰。面对这种情况&#…

wpsword求和操作教程

wpsword求和怎么操作: 1、首先,单纯的数据是无法求和的,所以我们必须要“插入”一个“表格” 2、接着将需要求和的数据填入到表格中。 3、填完后,进入“布局”选项卡。 4、然后打开其中的“公式” 5、在其中选择求和公式“SUM”并…

Go、Java、C++语言实现多态的方式

Go、Java、C语言实现多态的方式各有特色,但都遵循面向对象编程的基本原则。以下是各自实现多态的主要手段: Go语言: 虽然Go语言本身并不直接支持类和传统的面向对象继承,但它通过接口(Interface)实现了多态…

php高精度数学计算 - bc函数

PHP中的bc函数是用于高精度计算的函数,可以处理大数运算,支持加、减、乘、除、幂运算等。bc函数的语法如下: bc***(string $num1,string $num2, int $scale 0) : string参数说明: $num1:要进行计算的数值&#xff0c…

从0到1部署私域NuGet库:实战指南,让你轻松掌握!

引言 私域NuGet包的重要性:代码复用和团队协同。通过将公共组件、库或工具打包成NuGet包,并在私域中共享,团队成员可以更方便地引用和使用这些资源。其次私域NuGet包有助于依赖管理。通过私域NuGet包,团队可以集中管理这些依赖&a…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司(以下简称为“隆泰物业”)创建于2002年,总部设在河北省高碑店市,具有国家一级物业管理企业资质,通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今,隆…

启信宝商业大数据助力全国经济普查

近日,合合信息旗下启信宝收到中国青年创业就业基金会感谢信,对启信宝协同助力全国经济普查和服务青年创业就业研究表达感谢。 第五次全国经济普查是新时代新征程上一次重大国情国力调查,是对国民经济“全面体检”和“集中盘点”,…

virtualbox 设置虚拟机 centos 网络

在VirtualBox中为运行CentOS系统的虚拟机配置网络连接,您通常可以选择以下几种网络模式之一,以满足不同的网络需求: NAT (Network Address Translation): 功能:允许虚拟机通过宿主机的网络连接访问互联网,同时也可以从…

学习鸿蒙基础(10)

目录 一、轮播组件 Swiper 二、列表-List 1、简单的List 2、嵌套的List 三、Tabs容器组件 1、系统自带tabs案例 2、自定义导航栏: 一、轮播组件 Swiper Entry Component struct PageSwiper {State message: string Hello Worldprivate SwCon: SwiperControl…

Ribbon简介

目录 一 、概念介绍 1、Ribbon是什么 2、认识负载均衡 2.1 服务器端的负载均衡 2.2 客户端的负载均衡 3、Ribbon工作原理 4、Ribbon的主要组件 IClientConfig ServerList ServerListFilter IRule Iping ILoadBalancer ServerListUpdater 5、Ribbon支持…

为什么Redis设计成单线程

Redis是单线程却能支持高并发 1.Redis 将数据存储在内存中,读取速度非常快,而写入操作通常采用异步持久化的方式,将数据定期写入到磁盘,避免了磁盘IO成为性能瓶颈。这样一来,Redis 可以在高速内存中快速响应读取请求&…

BGP实训

BGP基础配置实训 实验拓扑 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为2的设备,以此类推;另外,同一网段中,IP 地址的主…

2024四川省赛“信息安全管理与评估“--网络事件响应--应急响应(高职组)

2024四川省赛“信息安全管理与评估“(高职组)任务书 2024四川省赛“信息安全管理与评估“任务书第一阶段竞赛项目试题第二阶段竞赛项目试题任务 1 应急响应(40分)第三阶段竞赛项目试题2024四川省赛“信息安全管理与评估“任务书 第一阶段竞赛项目试题 先略 第二阶段竞赛…

DFS-蓝桥杯常用Python算法

DFS 蓝桥杯中的DFS主要有针对分配过程的DFS和图/树的DFS两种类型,基本是模板题,难度中等 类型一:针对分配过程的DFS 例题 1:飞机降落 题目描述: N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 T …

vs右键在浏览器中查看报错

vs右键在浏览器中查看报错Visual studio 右键在浏览器中查看报错HTTP错误500.30——ANCM进程内启动失败——.NET Core HTTP Error 500.30 - ANCM In-Process Start Failure - .NET Core HTTP Error 500.30 - ANCM In-Process Start Failure Common solutions to this issue: …

海量电动汽车数据无法解决?不放试试基于MonteCarlo方法的大规模电动汽车充放电模型程序代码!

前言 电动汽车大规模入网充电时会导致系统内负载峰值拔高的问题,和分布式电源一样,都会对电网的安全稳定运行造成冲击,需要在满足系统运行经济效益最优的同时,尽量降低大量电动汽车入网无序充电对系统造成的不良影响。通过分析电…

【WEEK5】 【DAY4】数据库操作【中文版】

2024.3.28 Thursday 目录 2.数据库操作2.1.数据库2.1.1.新建数据库(右键的方法)2.1.2.查询:点击“查询”->“新建查询表”即可输入所需要的语句,点击“运行”,如: 2.2.结构化查询语句分类2.3.数据库操作…

帝国cms自适应html5古诗词历史名句书籍文章资讯网站源码整站模板sinfo插件带采集会员中心

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 帝国cms自适应html5古诗词名句书籍文…