合并两个有序数组题目讲解

一:题目

非递减顺序可以理解为:不完全递增顺序,它不是完全的递增,会存在前后相等的情况,比如

[1,2,2,3,5,6] ,这就是非递减顺序。

二:思路讲解

1:因为第一个数组nums1,有足够的空间去储存结果,所以我们不创建新数组,我们边比较边存储。

2:取三个位置,第一个end1位置为nums1数组有效值的最后一个(第m个元素,下标为m-),第二个end2是nums2数组的最后一个元素(第n个元素,下标为n-1),这两个位置,倒着比较,较大值就储存到nums1中最后的位置(end),如果相等取nums2和nums1到end去都一样,这样每次比较的较大值就从nums1数组的最后面依次往前插入。

3:比较后数组的两种情况

第一种情况: nums2比较完成,nums1没有比较完成

数组nums1为[1,2,3,0,0,0],数组nums2为[2,5,6]

第一步:end1和end2比较,较大值为end2,所以end就变成了end2。

第二步:end2和end都往前移动一个位置,然后继续和end1比较,结果还是end2大,所以end变成了end2.

第三步:end2和end往前移动一个位置,然后end2和end1继续比较,结果是end1大,所以end变成了end1.

第四步:end和end1往前以一个位置,然后end1和end2继续比较,结果两者相等,所以end变成了end2,此时end2和end都要往前移动一个位置,所以nums2就遍历完了。

nums2遍历完的这种情况呢,我们发现nums1就是我们想要的答案[1,2,2,3,5,6],不需要再做任何的补充即可。

第二种情况: nums1比较完成,nums2没有比较完成。

数组nums1为[2,5,6,0,0,0],数组nums2为[1,2,3]

第一步:end1和end2比较,结果是end1大,所以end变成了end1.

第二步:end1和end往前移动一个位置,然后end1和end2比较,结果end1大,所以end变成了end1。

第三步:end和end1往前移动一个位置,end1和end2比较,结果end2大,所以end变成了end2。

第四步:end和end2往前移动一个位置,然后end1和end2比较,结果两者相等,所以end变成了end2。

第五步:end和end2都往前移动一个位置,然后end1和end2比较,结果是end1大,所以end变成了end1。

此时的nums1已经被比较完了,但是nums1的数组为[2,2,2,3,5,6],并不是正确答案!

解决方法:将nums2中剩余的全部放进nums1中对应的没被修改过的位置,比如图中的end2放进nums1中对应的end的位置,此时的end指向的位置的2虽然被用去比较过了,但这个位置本身是没有被修改过的。

代码展示:

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

3. 分布式链路追踪的链路日志设计

前言 分布式链路追踪的客户端实现中,我们会通过各种手段和规则得到一个又一个的Span,得到这些Span后,需要在分布式链路追踪的服务端这边汇总这些Span并拼接出一条请求链路,那么这里就存在一个问题,客户端得到的Span如…

vue脚手架和vite创建的项目的环境配置

开发环境文件 .env.development NODE_ENV"development" # // 开发接口域名 本地测试就用这个 # vue脚手架创建的 VUE_APP_MODE"开发环境" VUE_APP_API_URL http://19527 # vite创建的 # VITE_MODE"开发环境" # VITE_BASE_URL http://1920:9527…

【自动驾驶|毫米波雷达】初识毫米波雷达射频前端硬件

第一次更新:2024/5/4 目录 整体概述 混频器(MIXER) 低通滤波器(LPF:Low-Pass filter) 数模转换器(ADC:Analog to Digital Converter) 毫米波雷达功能框图 整体概述 完…

开源go实现的iot物联网新基建平台

软件介绍 Magistrala IoT平台是由Abstract Machines公司开发的创新基础设施解决方案,旨在帮助组织和开发者构建安全、可扩展和创新的物联网应用程序。曾经被称为Mainflux的平台,现在已经开源,并在国际物联网领域受到广泛关注。 功能描述 多协…

如何利用AI提高内容生产效率

一:简介 通过AI技术可以在内容生产过程中提升效率和质量,以下是一些方法和应用场景: 1. 自动化内容生成: 自然语言生成(NLG):通过AI技术,可以自动生成文章、报告、产品描述等文…

原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 采用原型模式(Prototype)来实现上述要求,得到如图 7.25 所示的类图。 原…

如何完美解决Outlook大文件传送问题,提升办公协作效率?

在日常工作中,邮件是一种常用的通信方式,经常用来发送各类文件,比如报告和文档、合同和协议、财务报表、营销资料、设计文件等。但有时文件会比较大,因此Outlook大文件传送时,会遇到附件大小受限的情况。常用的解决发送…

Sqlmap的使用

Sqlmap URL 检测 sqlmap直接对单一的url探测,参数使用-u或--url payload:sqlmap -u "http://192.168.10.1/sqlilabs/sqli-labs-php7-master/Less-1/?id1" --banner 注意:如果进入这个页面要先登录那么就需要把cookie带上 sqlm…

【MsSQL】数据库基础 库的基本操作

目录 一,数据库基础 1,什么是数据库 2,主流的数据库 3,连接服务器 4,服务器,数据库,表关系 5,使用案例 二,库的操作 1,创建数据库 2,创建…

【代码分享】使用HTML5的Canvas绘制编码说明图片

最急在工作中遇到一个需求,根据给定的编码生成编码说明,像下面这样的效果。 不同含义的编码用横杠分割,然后每个编码下面用箭头指明具体的含义。下面是我使用canvas实现的代码。具体的编码宽度大家可以根据实际情况进行调整,目前…

未授权访问:Redis未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用redis未授权写入weshell 5、利用redis未授权反弹shell 6、利用redis未授权实现免密登录 防御手段 从这篇文章开始我就要开始学习各种未授权访问的知识和相关的实操实验了,一共有好多篇,内容主…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

Portforge:一款功能强大的轻量级端口混淆工具

关于Portforge Portforge是一款功能强大的轻量级端口混淆工具,该工具使用Crystal语言开发,可以帮助广大研究人员防止网络映射,这样一来,他人就无法查看到你设备正在运行(或没有运行)的服务和程序了。简而言…

SpringBoot项目配置HTTPS接口的安全访问

参考:https://blog.csdn.net/weixin_45355769/article/details/131727935 安装好openssl后, 创建 D:\certificate CA文件夹下包含: index.txt OpenSSL在创建自签证书时会向该文件里写下索引database.txt OpenSSL会模拟数据库将一些敏感信息…

MacOS快速安装FFmpeg,并使用FFmpeg转换视频

前言:目前正在接入flv视频流,但是没有一个合适的flv视频流地址。网上提供的flv也都不是H264AAC(一种视频和音频编解码器组合),所以想通过fmpeg来将flv文件转换为H264AAC。 一、MacOS环境 博主的MacOS环境(…

机器学习——4.案例: 简单线性回归求解

案例目的 寻找一个良好的函数表达式,该函数表达式能够很好的描述上面数据点的分布,即对上面数据点进行拟合。 求解逻辑步骤 使用Sklearn生成数据集定义线性模型定义损失函数定义优化器定义模型训练方法(正向传播、计算损失、反向传播、梯度清空&#…

vue3+elementPlus:el-input输入框设置数字小数点

<el-input-numberplaceholder"请输入"v-model.number"scope.row.threeValue"class"mx-4":step"0.001" //精度controls-position"right" //幅度/></template> 上一篇文章&#xff0c; vue3echarts&#xff1a;e…

三分钟了解计算机网络核心概念-数据链路层和物理层

计算机网络数据链路层和物理层 节点&#xff1a;一般指链路层协议中的设备。 链路&#xff1a;一般把沿着通信路径连接相邻节点的通信信道称为链路。 MAC 协议&#xff1a;媒体访问控制协议&#xff0c;它规定了帧在链路上传输的规则。 奇偶校验位&#xff1a;一种差错检测方…

淘宝扭蛋机小程序开发:转动幸运,开启无限惊喜

一、探索未知&#xff0c;开启全新扭蛋体验 淘宝扭蛋机小程序&#xff0c;为您带来一场前所未有的扭蛋盛宴。在这个充满神秘与乐趣的平台上&#xff0c;每一次点击都将引领您走进未知的宝藏世界&#xff0c;每一次旋转都可能揭示出意想不到的惊喜。 二、海量商品&#xff0c;…

一个好用的轮子——美丽“表哥”(prettytable)

原文链接&#xff1a;http://www.juzicode.com/python-note-prretytable 在编写命令行程序时如果要输出表格&#xff0c;使用print()函数时通常需要花费大量的精力用在空格符和tab制表符的排版上。 我们先来看个例子&#xff0c;有一个包含3个字段的表格&#xff0c;需要用pri…