合并两个有序数组
题目
给你两个按 非递减顺序 排列的整数数组 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 中的元素。
示例 2:
输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。
示例 3:
输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
题解
先贴代码
public static void merge(int[] nums1, int m, int[] nums2, int n) {/*****************方法一:合并后对数组进行排序***********************/
// for (int i = 0; i < n; i++) {
// nums1[m + i] = nums2[i];
// }
// Arrays.sort(nums1);/*****************方法二:双指针法***********************/
// int nums[] = new int[m + n];
// int p1 = 0, p2 = 0;
// int cur = 0;
// while(p1 < m && p2 < n){
// if (nums1[p1]> nums2[p2]){
// nums[cur++] = nums2[p2++];
// } else {
// nums[cur++] = nums1[p1++];
// }
// }
// while(p1 < m){
// nums[cur++] = nums1[p1++];
// }
// while(p2 < n){
// nums[cur++] = nums2[p2++];
// }
// for (int i = 0; i < m + n; i++) {
// nums1[i] = nums[i];
// }/*****************方法三:逆向双指针法***********************/int p1 = m - 1, 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--];}}while (p2 >= 0) {nums1[tail--] = nums2[p2--];}while (p1 >= 0) {nums1[tail--] = nums1[p1--];}}
方法一
简单粗暴,先将nums2数组中的数放到nums1后面,然后对整个nums1数组进行排序。这样时间复杂度为O(m+n)lg(m+n),所需时间复杂度主要为排序操作的开销;空间复杂度为O(lg(m+n)),主要为排序所需的空间。
方法二
需要新建一个临时数组,从前往后遍历数组,每次都将较小的数先放入临时数组中。需要注意的是当某个数组遍历完成后,需要将另一数组中的值放到按照顺序放到新数组中。
时间复杂度:O(m+n)
空间复杂度:O(m+n),主要用于临时数组开销。
方法三
方法二虽然降低了时间复杂度,但是需要结束临时数据,增加了空间复杂度,方法三使用逆向双指针法,不用借助临时数据。
从后往前遍历数组,每次都将较大的数先放入数组中。
时间复杂度:O(m+n)
空间复杂度:O(1)。
相关文章:
合并两个有序数组
题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并…...
系统思考:局部最优与全局失衡
最近遇到一家创业公司的创始人,在复盘时说了一句扎心的话:“我们真的已经很努力了,大家每天都在拼,连周末都不休息……但事还是做不完,进展还是很慢。” 我和几个关键岗位员工聊了聊,他们也说:“…...
Windows 系统中安装 flash - attn
#工作记录 一、下载 flash_attn 在 Windows 系统中,直接使用 pip 在线安装 flash_attn 很可能失败。 建议从 kingbri1/flash-attention 的 GitHub 发布页面 下载与当前 Python、torch 和 CUDA 版本匹配的 .whl 文件,并从本地进行安装。 Linux版本&am…...
理想药用植物的特征综述-理想中药材”的系统定义-文献精读125
Decoding and designing: Promising routes to tailor-made herbs 解码与设计:定制化草药的潜力路径 摘要 理想药用植物的特征可归纳为高次生代谢产物含量、高抗逆性、理想的形态以及高产量。本研究提出了两种策略,用于解析中药活性成分的生物合成与质…...
Cline原理分析-prompt
Cline 抓包-prompt原文 You are Cline, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices. TOOL USE You have access to a set of tools that are executed upon the user’s…...
allegro 怎样显示/隐藏铜皮shape?
1、setup–>User preferences; 2、Display -->shape_fill ; 3、5个方框打“√”代表隐藏铜皮; 4、不打√代表显示铜皮;...
URP - 公告牌的效果实现
效果: 【太妃糖耶】我的最新作品,快来一睹为快! 原理:使面片的正面永远跟随摄像机的旋转 首先我们可以了解一下顶点旋转的原理 B点是由原坐标系中的基向量和A点坐标值相乘得到的 当旋转此基向量后,B点的坐标值会发生…...
在VTK中使用VTKCamera
文章目录 概要Cpp代码概要 在VTK(Visualization Toolkit)中,vtkCamera 类用于控制三维场景中相机的视角。相机决定了你从哪个角度和位置观察三维场景。使用 vtkCamera 的一般步骤包括创建相机对象、配置相机参数、将相机设置为渲染器的活动相机,以及更新相机视图。 Cpp代…...
牛客:AB4 逆波兰表达式求值
链接:逆波兰表达式求值_牛客题霸_牛客网 题解: 利用栈,遍历字符串数组,遇到运算数则入栈,遇到运算符则取出栈顶两个运算数进行运算,并将运算结果入栈。 class Solution { public:/*** 代码中的类名、方法…...
Linux:文件操作
在C语言中,我们可以使用fopen() fclose() fread() fwrite()等接口进行文件操作,而由于文件是储存于磁盘中的,且磁盘是由操作系统来管理的,因此在用户层面对文件的操作必然要调用操作系统对文件的操作。 我们接下来就要了解操作系…...
Gin 集成 prometheus 客户端实现注册和暴露指标
在 Gin 框架中集成 Prometheus 监控系统,可以帮助开发者实时收集和展示应用程序的性能指标,便于监控和故障排查。 Prometheus 是一个开源的监控和告警系统,最初由 SoundCloud 开发,现已成为 Cloud Native Computing Foundation (…...
欢度我们的节日
众所周知,一年一度的“五一”小长假就要来了。先预祝各位兄弟姐妹们假期快乐,天天好心情! 你们在节前的最后一天是处于什么状态呢?是不是已经处理好手中的工作静待明日的旅程?还是忙忙碌碌担心搞不完要加班?…...
03_Mybatis-Plus LambadaQueryWrapper 表达式爆空指针异常
🌟 03_MyBatis-Plus LambdaQueryWrapper 爆出空指针异常的坑点分析 ❓ 场景描述 来看一段常见的 MyBatis-Plus 查询写法,是否存在问题? Page<VideoInfoVo> videoInfoVosPage videoMapper.selectPage(page, new LambdaQueryWrapper&…...
左右分屏电商带货视频批量混剪自动剪辑生产技术软件:智能剪辑与合规化方案解析
一、引言:电商视频营销的工业化生产需求 在电商带货领域,高效产出差异化视频内容是提升转化率的核心竞争力。本文结合实战经验,解析基于智能分屏算法、动态素材重组、多维度参数配置的工业化剪辑方案,构建可复用的自动化生产流水…...
全面解析SimHash算法:原理、对比与Spring Boot实践指南
一、SimHash算法概述 SimHash是一种局部敏感哈希算法,由Google工程师Moses Charikar提出,主要用于海量文本的快速去重与相似度检测。其核心思想是将高维特征向量映射为固定长度的二进制指纹(如64位),通过计算指纹间的…...
【Docker】Docker拉取部分常用中间件
一、拉取MySQL 这里以Docker拉取MySQL5.7为例 #拉取镜像 docker pull mysql:5.7 docker run -d --name oj-mysql -p 3306:3306 -e "TZAsia/Shanghai" -e "MYSQL_ROOT_PASSWORD123456" mysql:5.7 -e 参数用于设置容器内的环境变量。TZ 是用于设置时区的环…...
表征(Representations)、嵌入(Embeddings)及潜空间(Latent space)
文章目录 1. 表征 (Representations)2. 嵌入 (Embeddings)3. 潜空间 (Latent Space)4. 关系总结5. 学习思考 1. 表征 (Representations) 定义: 表征是指数据的一种编码或描述形式。在机器学习和深度学习中,它特指模型在处理数据时,将原始输入数据转换成…...
google colab设置python环境为python3.7
最近在看transformers for machine learning:A Deep Dive这本书,发现书里的python版本是python3.7,但是当前google colab默认的python版本为3.12,带来诸多不便,因此需要将colab版本切换为python3.7的python环境。 1.下载需要的版…...
Kaggle比赛入门攻略(以 Titanic 为例)
为什么选择 Kaggle 入门比赛? Kaggle 是全球最大的数据科学竞赛平台。入门比赛 Titanic: Machine Learning from Disaster 是初学者的理想起点,数据量小、结构简单、题目经典。 Step 1:注册并加入比赛 访问比赛地址:https://www…...
【数据链路层深度解析】从帧结构到协议实现
目录 一、数据链路层核心定位1.1 OSI模型中的位置1.2 三大核心职责 二、帧结构详解2.1 以太网帧标准格式(IEEE 802.3)2.2 帧封装代码示例 三、核心协议机制3.1 MAC地址体系3.2 介质访问控制CSMA/CD(以太网冲突检测)现代交换机的演…...
大连理工大学选修课——机器学习笔记(5):EMK-Means
EM&K-Means 无监督学习 什么是无监督学习 模型从无标签的数据中自动发现隐藏的模式或结构聚类是最常用的方法 为什么要研究无监督学习 标记样本代价太大分类模式不断变化,标记易过时 数据的分布 参数方法 高斯分布、伯努利分布、多指分布等 非参数方法 局部模…...
算法基础学习|03整数二分
一、思路 (1)mid(lr1)/2 if(check(mid)):1.true [mid,r] lmid 2.false [l,mid-1] rmid-1 (2)mid(lr)/2 if(check(mid)):1.true [l,mid] rmid 2.false [mid1,r] lmid1 二、模板 如何选择模…...
婴幼儿急救实训室优化空间布局科学路径5.7
婴幼儿急救实训室的建设是提升托育服务质量、保障婴幼儿生命安全的关键环节。在当前托育行业快速发展的背景下,加强婴幼儿急救实训室建设,对于培养专业急救人才、提高急救技能水平具有重要意义。凯禾瑞华——实训室建设 一、搭建实操平台:沉浸…...
智能体开发
智能体开发是构建具备感知、决策和执行能力的智能系统的过程,核心围绕环境交互和自主决策展开。以下是关键要点: 一、开发流程 1. 需求定义 - 明确智能体目标(如对话交互、自动化任务、数据分析等)。 - 确定应用场景(…...
全球气象站点年平均降水数据(1929-2024)
ppmandata.cn借鉴Compustat、WRDS等国际知名数据库及FT50期刊专业标准,打造中国特色经济管理社会科学研究型数据库。涵盖上市公司、省份、地级市、专精特新等研究对象,涵盖经济、法律、金融、政策、科技、文化、健康、环保、人口等各类热点数据。顶刊标准…...
c++漏缺: stl等 初始化 用法 sort
目录 数组初始化:c int a[5]{1,2,3,4,5};int b[5]a;后面改变b对a有无影响 int pre[n]nums[0]对吗 初始化为0呢 方法1:使用循环初始化 方法2:使用memset函数 方法3:使用初始化列表(C99及以后) 方法4&…...
usb端点笔记
端点:端点是USB设备的唯一可识别部分,其是主机和设备之间的通信流的终点。是一个USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。(逻辑上) 接口:可以理解为一个功能。(物理功能…...
多智能体协同作战:MagenticOne如何指挥一支AI团队
你有没有想过,如果能让多个AI智能体像高效团队一样协同工作会怎样?每个成员各司其职,却又紧密配合。今天,我们就来聊聊AI世界的"特工组织"——多智能体系统,尤其是最近热门的MagenticOne架构。 ᾞ…...
C++静态编译标准库(libgcc、libstdc++)
在使用GCC编译器时,部分版本默认动态加载标准库。如果客户机器上没有安装相应库,就会提示找不到:libgcc_s_seh-1.dll、libstdc-6.dll、libwinpthread-1.dll。 解决方法: 设有动态库libadd.dll、静态库libmul.a 编译命令&#x…...
[PRO_A7] SZ501 FPGA开发板简介
SZ501 FPGA开发板简介 概述 SZ501 FPGA开发板是专为高性能FPGA设计、快速原型开发和复杂应用调试打造的先进开发平台。搭载Xilinx Artix-7系列XC7A100T FPGA芯片,SZ501提供卓越的逻辑运算能力和灵活的接口支持,广泛适用于通信、信号处理、嵌入式系统及…...
URP - 序列图动画的实现
效果: 【太妃糖耶】更新了一条视频,快来围观! 序列图动画的实现 首先先了解下序列图样式的纹理图片 如上图一可在Shader中使用该图片制作燃烧的火的动画,但是如何实现呢?接下来一起来看一下吧 序列图动画的实现原理大…...
Helm部署kong+konga的路由管理系统
部署postgres服务 创建存储类 创建存储类对应的deployment --- apiVersion: apps/v1 kind: Deployment metadata:annotations: {}labels:app: eip-nfs-postgresql-storageclassname: eip-nfs-postgresql-storageclassnamespace: kube-systemresourceVersion: 26709116 spec:…...
液氮恒温器原理解析
一、核心降温原理 1、液氮媒介作用 液氮恒温器以液氮(沸点约77K/-196℃)为降温媒介,通过液氮蒸发吸收热量的特性实现快速降温。 液氮在内部腔体蒸发时形成气-液界面,利用毛细管路将冷媒导入蒸发器,强化热交换…...
EchoMimic 阿里开源数字人项目的复现过程
EchoMimic 是一个由阿里巴巴蚂蚁集团开发的开源AI 数字人项目,通过可编辑地标调节实现逼真的音频驱动肖像动画,它能够将静态图像转化为具有动态语音和表情的数字人像。 今天咱们来复现下,看看有哪些坑,再看看数字人效果如何。 先…...
iVX 开源战略:多维突破下的产业生态革新与未来图景
在开源技术浪潮席卷全球软件产业的当下,iVX 凭借持续迭代的开源战略,不断突破技术边界,拓展应用场景,重塑产业生态。从底层技术架构的深度优化,到多行业应用场景的全面覆盖;从全球化生态体系的完善构建&…...
数据库12(游标)
游标语法 declare c1 cursor for select title from titles --定义一个游标c1,确定游标对应的列是titles表的title列,游标可以对应多个列 declare bname varchar(50) --声明变量 open c1 --初始化,开始使用游标 fetch next from c1 in…...
Windows11下本地化部署AI开发环境(Dify+Ollama)
前言 本次实践希望在Windows环境下本地化部署AI开发环境,通过Ollama下载运行模型,通过Dify搭建管理AI应用。 硬件环境 AI大模型开发对硬件要求较高,理论上配置越高越好。本次搭建环境如下: Windows系统(Windows11&…...
Oracle Bigfile 与 Smallfile 表空间对比分析
Oracle Bigfile 与 Smallfile 表空间对比分析 一、基本概念对比 特性Bigfile 表空间Smallfile 表空间定义每个表空间只包含一个大数据文件每个表空间可包含多个数据文件引入版本Oracle 10gOracle 传统模式最大文件大小取决于块大小(32TB for 8K块)通常最大32GB(传统限制)文件…...
Cypress/Playwright 跨浏览器测试
以下是关于 Cypress 和 Playwright 跨浏览器测试的基本知识总结: 一、工具核心差异 维度CypressPlaywright浏览器支持Chromium 系为主(需配置支持其他浏览器)原生支持 Chromium/Firefox/WebKit架构设计同进程运行远程协议控制(CDP/WebDriver)执行速度较快(内存运行)快速…...
【Python学习路线】零基础到项目实战
目录 🌟 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 🧠 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 💻 二、实战演示环境配置要求核心代码实现运行结果验证 ⚡ 三、性能对比测试方法论量化数据对比…...
26个脑影像工具包合集分享:从预处理到SCI成图
为方便各位脑科学研究者更好地使用优质的开源工具,本期脑海科技实验室汇总了近期整理的脑影像分析软件,希望可以帮助大家。 脑影像分析软件汇总 本次总结脑影像工具包合集(点击本条文字内容跳转) 工具包包括 1、CONN࿱…...
C# 高效操作excel文件
C#高效操作Excel文件指南 一、主流Excel处理方案对比 方案类型特点适用场景EPPlus第三方库功能全面,性能好,支持.xlsx复杂Excel操作,大数据量NPOI第三方库支持.xls和.xlsx,功能全面兼容旧版Excel文件Closed…...
综合案例建模
文章目录 滚花手扭螺丝机箱封盖螺丝螺丝孔锥形垫片 滚花手扭螺丝 前视基准面画草图,旋转生成主体 倒角0.5 顶面,草图转换实体引用,去复制边线 生成螺旋线路径 顶面绘制草图 上一步画的草图沿螺旋线扫描切除 镜像扫描特征 阵列镜像扫描特征 创…...
【蓝桥杯】第十六届蓝桥杯C/C++大学B组个人反思总结
前言 这是我第一次参加蓝桥杯大赛,我将通过一下 4 点来总结我的整个蓝桥杯经历 赛前准备 我大约花了 150h 来备战本次蓝桥杯软件赛,虽然最终的没有取得很好的成绩(省二),但是此次比赛对我来说有着很大的意义。 大二…...
运维仙途 第2章 日志深渊识异常
第2章 日志深渊识异常 情节梗概 凌运维发现混沌钟显示的灵脉波动与藏经阁古籍记载不符。为查明真相,他冒险进入「日志深渊」——青云门历代系统异常的记录之地。在这里,他结识了能同时解读十万条日志的慕监控… 技术映射 graph LR古籍记载 --> 历…...
知识图谱系列(1):基础概念与发展历程
1. 引言与背景介绍 在当今数字化时代,数据呈现爆炸式增长,如何有效地组织、管理和利用这些海量数据成为了一个重要挑战。传统的数据管理方式往往将数据存储在相互隔离的系统中,难以建立数据之间的关联,更难以挖掘数据背后的深层知识和价值。知识图谱作为一种新型的知识表示…...
halcon关闭图形窗口
1、dev_close_window () 调用一次这个函数关闭一个图形窗口,并且先关闭最后打开的那个图形窗口,如果一共打开了N个图形窗口,那么就需要调用dev_close_window N次。...
2025深圳杯东三省数学建模竞赛选题建议+初步分析
完整内容请看文章最下面的推广群 2025深圳杯&东三省数学建模选题建议初步分析 首先吐槽一句,今年为了规避AI对数模竞赛的冲击,深圳杯的整体难度相较往年更高,C君作数模5年见过最难的一次比赛。 提示:C君认为的难度和开放度…...
flutter开发音乐APP(简单的音乐播放demo)
效果如下: 音乐播放界面 锁屏音乐播放展示 主要使用的插件如下 just_audio : 是一个功能丰富的音频播放器,适用于Android、iOS、macOS、Web、Linux和Windows平台。它提供了多种功能,包括从URL、文件、资产或字节流读取音频,支持D…...
day007
文章目录 1. sort 排序1.1 -r,-n1.2 -k 按列比较1.3 练习1.3.1 找出/etc下占用空间最大的前5个内容1.3.2 查看/*下所有目录的大小,并取出最大的5个 2. uniq 去重2.1 uniq与sort统计次数 3. awk4. 日志分析4.1 分析access.log中ip出现的次数并取前5名4.2 分析secure文…...