88. 合并两个有序数组(简单)

88. 合并两个有序数组

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java

1. 题目描述

题目中转:88. 合并两个有序数组
在这里插入图片描述
在这里插入图片描述

2.详细题解

    两个数组均有序(非递减),要求合并两个数组,直观的思路,借助第三个数组,依次从左至右遍历两个数组,比较二者大小,将较小的依次放入第三个数组中,遍历完毕后,将第三个数组的元素再依次写入指定的第一个数组。但这样存在的问题是,会有O(m+1)的空间耗费,因此充分利用第一个数组可以优化这部分空间耗费。
  如果两个数组均从左至右遍历,按照非递减顺序合并不借助第三者并不能完成合并,而第一个数组后半部分(n个长度)是闲置的,因此两个数组可以从右至左的顺序遍历,按照非递增的顺序合并,先定位大值元素的位置;此时不用担心第一数组的空余位置不够用,因为后半部分长度为第二个数组的长度,肯定也会有疑问,第一个数组不是也会把数据移入后半部分吗?但忽略了第一个数组每移入一个数据到后半部分,同时也会空出一个位置。
  因此使用两个指针p1和p2,分别指向两个数组中的最后一个元素索引即m-1和n-1,当指针p1指向元素大于等于指针p2指向的元素时,则将指针p1指向的元素移入指定位置并指针向左移动一位(即p1–),否则,将指针p2指向的元素移入指定位置并指针向左移动一位(即p2–);移入的位置也需要定位,因此还需要第三个指针tail,执行第一个数组的末尾即m+n-1,每移入一个元素,则该指针向左移动一位(即tail–)。

3.代码实现

3.1 Python

class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"""Do not return anything, modify nums1 in-place instead."""p1, p2 = m-1, n-1tail = m + n - 1while p1 >= 0 and p2 >= 0:if nums1[p1] >= nums2[p2]:nums1[tail] = nums1[p1]p1 -= 1else:nums1[tail] = nums2[p2]p2 -= 1tail -= 1if p2 >=0:nums1[:p2+1] = nums2[:p2+1]

在这里插入图片描述

3.2 Java

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

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code

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

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

相关文章

【Linux环境下Hadoop部署】—报错“Unit ntpd.service could not be found.“

项目场景&#xff1a; 执行 “systemctl status ntpd” 命令。 问题描述 报错&#xff1a;Unit ntpd.service could not be found. 原因分析&#xff1a; 没有安装ntp 解决方案&#xff1a; 执行 “yum install ntp” 命令&#xff0c;再次执行 “systemctl status ntpd” 命令…

Docker部署私有仓库Harbor

Harbor构建Docker私有仓库 文章目录 Harbor构建Docker私有仓库资源列表一、部署Docker-Compose服务1.1、下载最新Docker-Compose1.2、查看Docker-Compose版本 二、部署Harbor服务2.1、下载Harbor安装程序2.2、配置Harbor参数文件2.3、所需参数和可选参数2.3.1、所需参数2.3.2、…

CP AUTOSAR标准之MemoryDriver(AUTOSAR_CP_SWS_MemoryDriver)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块内存驱动程序(Mem)的功能、API和配置。   内存驱动程序提供访问不同类型内存设备的基本服务,如读取、写入、擦除和空白检查。   尽管闪存仍然是最常见的非易失性存储器技术,但内存驱动程序规范考虑了所有相关的内存设备…

虚拟警示教育馆如何革新安全教育?揭秘其深远意义与实际优势

一、推动警示教育的创新与普及 虚拟警示教育馆是将传统警示教育与现代科技相结合的新型教育模式。其意义主要体现在以下几个方面&#xff1a; 1、增强教育的互动性和沉浸感&#xff1a;虚拟警示教育馆通过3D建模、VR等技术&#xff0c;创建逼真的警示场景。这种身临其境的体验能…

(资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料

今天给大家带来的不是软件&#xff0c;而是一份精神食粮——《知行合一》的教程福利。这可不是一般的教程&#xff0c;它关乎心灵&#xff0c;关乎智慧&#xff0c;关乎我们如何在纷繁复杂的世界中找到自己的位置。 咱们得聊聊王阳明&#xff0c;这位明代的大儒&#xff0c;他…

餐饮业应该购置精酿啤酒设备吗?

近几年&#xff0c;啤酒行业刮起了一股“精酿风”&#xff0c;它不只是一种饮品口味上的变化&#xff0c;更像是一个生活方式的升级。精酿啤酒的兴起&#xff0c;不仅体现在味道的多样性和层次感上&#xff0c;更重要的是它代表了一种生活态度&#xff0c;是对品质生活的追求。…

可复用验证的测试用例 5大编写技巧

编写可复用验证的测试用例&#xff0c;节省了编写新测试用例的时间和资源&#xff0c;提高了测试效率和项目质量&#xff0c;减少错误修复成本&#xff0c;有利于实现较高的投入产出比。缺乏可复用的测试用例会导致测试团队不断重复创建相似的测试场景&#xff0c;消耗大量时间…

每日一练:攻防世界:Ditf

这是难度1的题吗&#xff1f;&#xff1f;&#xff1f; 拿到一个png图片&#xff0c;第一反应就是CRC爆破&#xff0c;结果还真的是高度被修改了 这里拿到一个字符串&#xff0c;提交flag结果发现不是&#xff0c;那么只可能是密钥之类的了 看看有没有压缩包&#xff0c;搜索…

IMU应用于体操训练

考虑到在艺术体操训练与竞赛中艺术体操的训练与比赛中&#xff0c;地板项目导致的伤率最高&#xff0c;最近&#xff0c;一个来自澳大利亚的科研团队利用IMU评估运动员执行基础翻腾技巧训练时&#xff0c;他们上肢与下肢所承受的冲击负荷。 本次实验共有十四名艺术体操运动员参…

(五)React受控表单、获取DOM

1. React受控表单 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 准备一个React状态值 const [value, setValue] useState()通过value属性绑定状态&#xff0c;通过onChange属性绑定状态同步的函数 <input type"text"…

计算机网络期末复习1(最后一天才开始学版)

1.一个PPP帧的数据部分&#xff08;用十六进制写出&#xff09;是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是&#xff08;用十六进制写出&#xff09; 由于PPP帧的标志字段为7E,因此,为了区别标志字段和信息字段,将信息字段中出现的每一个0x7E转变成(0x7D,0x5E),0x7…

PIL保存后的图像莫名的失真,部分不失真部分很失真

原图片是这样的&#xff1a; PIL会自行**“自救”被正则化的图片&#xff0c;导致自救过曝&#xff0c;部分颜色非常失真&#xff0c;但是部分又保存的还行。现象如下&#xff1a; 这里你检查一下你保存的是不是被正则化的图片**&#xff0c;如果是&#xff0c;改改。 查看一…

【vue大作业-端午节主题网站】【预览展示视频和详细文档】

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

宝塔面板使用技巧(pure-FTP)上传文件和文件夹默认权限644的修改

前言 科技在进步各种各样的开源软件和库让我们应接不暇&#xff0c;我估计现在所有做php开发的人员都知道宝塔面板&#xff0c;我就经常用&#xff0c;但是不知道大家出现过一个问题不就是在我们开发过程中需要实时的给服务器上传我们开发的文件那么就涉及到了宝塔自带的pure-F…

【unity小技巧】unity3D寻路指示轨迹预测

最终效果 文章目录 最终效果前言设置好LineRenderer线组件配置&#xff0c;用于绘制寻路轨迹代码烘培导航网格运行效果参考 前言 最近刷到b站up主山长操作库的内容&#xff0c;感觉很有意思&#xff0c;于是就简单整理了一下。注意本文的实现思路完全是按这位up整理的&#xf…

JAVAEE之网络原理(2)_传输控制协议(TCP)、概念、格式、确认应答及超时重传机制

前言 在上一节中&#xff0c;我们介绍了 UDP (用户数据报) 的相关知识&#xff0c;在这一节中我们将继续介绍传输层中另一种更为重要的协议。 一、什么是TCP协议&#xff1f; 1.1 TCP 基本概念 TCP协议全称&#xff1a;传输控制协议&#xff08;TCP&#xff0c;Transmission C…

python基础语法 002 - 4 字符串

1 字符串 字符串&#xff1a;引号括起来的数据类型 # 双引号 a "yuze wang"# 单引号 a ’yuze wang‘# 三引号 a ’‘’yuze‘‘’ a """yuze"""注意&#xff1a;所有格式表示都是半角&#xff0c;全角会报错 1.1 引号表示 …

HSE在企业中的重要性:健康、安全与环境的全面保障

在当今企业运营中&#xff0c;健康、安全与环境&#xff08;HSE&#xff09;管理体系已经成为不可或缺的一部分。HSE管理不仅保护员工的健康和安全&#xff0c;还致力于环境的可持续发展。本文将简洁明了地阐述HSE在企业中的关键作用及其带来的综合效益。 员工健康保护 健康风…

深入理解Qt状态机的应用(一)

Qt的状态机框架提供了一种管理复杂系统状态的方法&#xff0c;它基于经典的有限状态机&#xff08;FSM&#xff09;理论。这种框架在开发涉及多种状态和状态之间需要明确转换的应用程序时特别有用&#xff0c;如用户界面交互、网络协议、游戏开发等场景。 什么是有限状态机&a…

手写一个JSON可视化工具

前言 JSON 平时大家都会用到&#xff0c;都不陌生&#xff0c;今天就一起来实现一个 JSON 的可视化工具。 大概长成下面的样子&#xff1a; 树展示 相比于现有的一些 JSON 格式化工具&#xff0c;我们今天制作的这个小工具会把 JSON 转为树去表示。其中&#xff1a; 橙色标…