88.合并两个有序数组

 题目解析:

        非递减顺序说明,是递增的数列。m 、n分别表示数列1 和 数列2中元素的个数,但是要注意的是,数列1的长度的是m+n,不单纯的只是m,所以这里的m的含义需要特别注意。

这道题意思就是说,把列表2的所有元素放到列表1里,然后再对列表1进行从大到小的排序。

解题思路:

        先把列表2里的元素全部加到列表1里,然后使用列表的sort( )进行排序即可。

做法1:(这里有坑,不知道为什么切片有问题)

         把列表2的值加到列表1上。

        需要注意的是,不能直接使用nums1+=nums2, 因为题目中说,列表1的初始长度是m+n,其中的m是说,列表1中要进行排序的个数,后面的n全是0,(先用0占位),比如:[1,2,3,0,0,0]  等把列表2里的值全部加进去之后就不是0了。所以,如果直接使用nums1+=nums2的话,就会把0也加上去了,例如:这显然不是我们想要的答案。

class Solution:
    def merge(self, nums1, m, nums2, n):
        nums1 += nums2
        nums1.sort()
        return nums1

s = Solution()
result = s.merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3)
print(result)
# 结果:
[0, 0, 0, 1, 2, 2, 3, 5, 6]

进程已结束,退出代码 0

怎么办?使用切片,先把要排序的m个数拿出来。

class Solution:
    def merge(self, nums1, m, nums2, n):
        nums1 = nums1[:m]  # 不知道为什么,这行在力扣上用不了,会报错
        nums1 += nums2
        nums1.sort()
        return nums1


s = Solution()
result = s.merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3)
print(result)
# 结果:
[1, 2, 2, 3, 5, 6]

进程已结束,退出代码 0

力扣上使用  nums1 = nums1[:m] 会出错,不知道为什么

  

所以不能用切片的这种方法,。

做法2:(推荐)把列表1里m个元素后面的0,全部替换成列表2的值。

即:因为列表1的长度是m+n,而m表示要排序的个数,n全部是0,可以理解为占位,可以把列表1看成:

[ 数1, 数2 , ..数m, 0 , 0 , 0..., 第n个0 ]   这样的一个列表,前m个都是要参与合并后排序的数,而后面的0全部都是占位,所以就可以把这n个0分别替换成列表2中的各个值,这样也就变相的把列表2的元素加到列表1上了。

class Solution:
    def merge(self, nums1, m, nums2, n):
        nums1[m:] = nums2   #将列表1里m后面的n个0,替换成列表2
        nums1.sort()
        return nums1

s = Solution()
result = s.merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3)
print(result)
#结果:
[1, 2, 2, 3, 5, 6]

进程已结束,退出代码 0

力扣中的写法:

nums1[m:] = nums2  #将列表1里m后面的n个0,替换成列表2
nums1.sort()

当然代码还有可以改进的地方,比如,提升代码的时间复杂度,不用sort( )排序。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工控一体机10.1寸显示器电容触摸屏(YA07JK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 1.1 YA07JK介绍 YA07JK 是我公司推出的一款新型安卓屏,使用电容触摸屏。4 核 Cortex-A7 架构,主频1.2GHz …

STM32——启动文件选择及启动文件宏定义

文章目录 前提:以STM32F1xx系列芯片为例(有方法,其他系列一样)启动文件选择对应启动文件的寻找方法对应宏定义#define的寻找方法另外 前提:以STM32F1xx系列芯片为例(有方法,其他系列一样&#x…

【YOLOv10的使用】YOLOv10的训练/验证/预测/导出模型/ONNX模型的使用

🚀🚀🚀 YOLOv10: 实时端到端的目标检测 性能 YOLOv10比最先进的YOLOv9延迟时间更低,测试结果可以与YOLOv9媲美,可能会成为YOLO系列模型部署的“新选择”。 目录 1 安装 2 训练 3 验证 4 预测 5 导出模型 6 ONNX…

Ubuntu20.04升级到22.04之后出现的问题

项目场景: 之前一致使用的是Ubuntu20.04,虽然丑了点,但是用着没什么问题,最近没能按捺住好奇心,升级到了22.04,升级后颜值有所提高,但是也带来了一些问题。 从20.04升级到22.04,起始…

PG TOAST技术

1.Toast简介: Toast是超长字段在PG的一个存储方式,对于用户来说不用关注这一技术的实现,完全是透明的,它会将大字段值压缩或分散为多个物理行来存储,与Oracle的CLOB,BLOB类似。 2.Toast的存储方式&#xf…

基于STM32实现智能水下机器人控制系统

目录 引言环境准备智能水下机器人控制系统基础代码示例:实现智能水下机器人控制系统 电机控制深度传感器数据读取IMU传感器数据读取用户界面与显示应用场景:水下探测与环境监测问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式…

【教程】利用API接口添加本站同款【每日新闻早早报】-每天自动更新,不占用文章数量

本次分享的是给网站添加一个每日早报的文章,可以看到本站置顶上面还有一个日更的日报,这是利用ALAPI的接口完成的!利用接口有利也有弊,因为每次用户访问网站的时候就会增加一次API接口请求,导致文章的请求会因为请求量…

Java基础-注解

注解本质是继承了Annotation接口的一个接口 首先,我们通过键值对的形式可以为注解属性赋值,像这样:Hello(value “hello”)。 接着,你用注解修饰某个元素,编译器将在编译期扫描每个类或者方…

【官方YOLOV10代码训练验证自己的数据集】

*************************************************** 码字不易,收藏之余,别忘了给我点个赞吧! *************************************************** Start 官方YOLOV10代码训练验证自己的数据集 官方论文:https://arxiv.…

JavaSE:String类常用方法(巨详细)

1、引言 在学习C语言时,我们就已经了解了字符串,但是在C语言中字符串只能用字符数组或者指针来表示,没有特定的字符串类型,而在Java中,我们有了字符串这一特定的类型---String类。 2、String类的常用方法 2.1 字符串…

鲲泰新闻|神州鲲泰创新智算之旅北京站开幕,发布全新智算架构和液冷整机柜产品应对 “多云、异构、绿色”挑战

5月17日,神州鲲泰智算中国行北京站盛大召开。在本次活动上,神州鲲泰针对用户对大模型训练、大算力需求的痛点,重磅发布多云异构环境下智算中心绿色着陆的产品及方案,包含异构智算调度运营平台HISO、异构智算加速平台HICA以及一体化…

pytest-sugar插件:对自动化测试用例加入进度条

摘要 在自动化测试过程中,测试进度的可视化对于开发者和测试工程师来说非常重要。本文将介绍如何使用pytest-sugar插件来为pytest测试用例添加进度条,从而提升测试的可读性和用户体验。 1. 引言 自动化测试是软件开发过程中不可或缺的一部分&#xff…

windows web提权

#Web到Win-系统提权-人工操作 如果提权中无法执行命令的话,可以尝试上传cmd.exe到可读写目录再调用 优点:解决实时更新不集成的EXP 缺点:操作繁琐,需要各种复现调试 1、信息收集 参考常见命令(见上图) …

ZYNQ EMIF进行PS与PL间的数据交互

1 概述 AXI-EMC IP 是一个可以可以支持各种内存型号的控制器,利用这个IP可以非常方便地模拟各种类型的内存或者FLASH接口实现数据的交互和通信。以下是AXI-EMC IP的功能特性: 1、支持AXI4 Slave Memory Map 接口,数据宽度为32位和64位 2、支持写入/读取寄存器的可选AXI4-Li…

帝国CMS如何修改时间格式,变成几分钟,几小时教程

该插件已经在帝国cms6.6上测试通过&#xff0c;至于其他版本&#xff0c;请自行测试。 目前支持&#xff1a;标签模板&#xff0c;列表模板&#xff0c;内容模板 安装说明&#xff1a; 把以下的内容复制到 /e/class/userfun.php 文件里&#xff08;放在<?php和?>之间…

kafka-偏移量图解

生产者偏移量&#xff1a;生产者发送消息时写入到哪个位置&#xff08;主题的每个分区会存储一个 leo 即将写入消息的偏移量&#xff09;&#xff0c;每次写完消息 leo 会 1 消费者偏移量&#xff1a;消费者从哪个位置开始消费消息&#xff0c;小于等于 leo&#xff0c;每个组…

低调收藏,这份MobaXterm使用指南很全面

中午好&#xff0c;我的网工朋友。 MobaXterm&#xff0c;这个名字对于我们这些经常需要在Windows环境下与Linux服务器打交道的人来说&#xff0c;应该并不陌生。它不仅仅是一个SSH客户端&#xff0c;更是一个功能强大的终端工具箱&#xff0c;集成了X服务器和Unix命令集&…

【深入学习Redis丨第一篇】Redis服务器部署详解

前言 小伙伴们大家好&#xff0c;我是陈橘又青&#xff0c;今天起 《深入学习Redis》 专栏开始更新。本专栏将专为希望深入了解Redis的开发者、系统架构师以及数据库爱好者而写的免费专栏。从Redis的基本概念入手&#xff0c;逐步深入到其内部实现和高级用法。希望能帮助你更好…

【Python】 深入理解 Python 包管理器:pip vs conda

基本原理 在Python编程世界中&#xff0c;包管理器是一个不可或缺的工具。它帮助开发者安装、更新和管理Python库。目前&#xff0c;最流行的两个包管理器是pip和conda。了解它们之间的区别&#xff0c;对于Python开发者来说至关重要。 pip pip是Python的官方包管理器&#…

Excel计算两个日期之间差额天数及DATEDIF使用

一.计算两个日期之间的差额天数 1.两个日期直接相减就可以得到两个日期间隔的天数&#xff0c;这里需要注意日期格式哦 日期格式需要为XXXX/XX/XX,不能为XXXX.XX.XX&#xff0c;否则显示Value错误如下。 二.使用DATEDIF函数计算差额天数 该函数只能手写&#xff0c;好像不能自…