LeetCode_[88. 合并两个有序数组]

LeetCode 88 - 合并两个有序数组 是非常基础的数组操作题目,考察双指针、逆序操作和空间优化等技巧。这个问题相当经典,对后续的归并排序、多指针问题、双数组相关问题都有指导意义。以下是详细的解法、模板与变体问题讲解。给定你两个有序整数数组nums1和nums2,以及两个非负整数m和n,表示分别代表数组nums1和nums2中的有效元素个数。将nums2中的所有元素合并到nums1中,使数组变为一个有序数组。 阅读详情

前言:用的是JavaScript。一开始打算用冒泡排序的,但是想到时间复杂度可能会到O(m+n)^{}^2,所以用了双指针法。不多说,看题:

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

合并数组没啥难的吧,注意不要用.length属性就行了,不然会把0算进去。

用双指针的另一个原因是原数组已经有序递增了,所以我们用双指针从数组末尾开始向前比较,把较大的元素放数组末尾就行了。哪个数组提前遍历完,说明另外一个数组已在正确位置,复制过去就行。

/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    let i=m-1,j=n-1,k=m+n-1;
    while(i>=0&&j>=0){
        if(nums1[i]>nums2[j]){
            nums1[k]=nums1[i];
            i--;
        }else{
            nums1[k]=nums2[j];
            j--;
        }
        k--;
    }
    while(j>=0){
        nums1[k]=nums2[j];
        j--;
        k--;
    }
};

空间复杂度T(1),时间复杂度(M+N)。

【简单】力扣算法题解析LeetCode88:合并两个有序数组 合并两个有序数组的算法题解:使用双指针从后向前填充,避免覆盖元素。核心思路是比较nums1和nums2末尾元素,将较大者放入nums1尾部,处理剩余元素后即可完成合并。时间复杂度O(m+n),空间复杂度O(1)。提供Java实现代码,适用于非递减数组的原地合并。 阅读详情

相关推荐

Simulink+Simscape多体仿真:六自由度Stewart平台动力学建模全流程

本文详细介绍了使用Simulink和Simscape Multibody进行六自由度Stewart平台动力学建模的全流程,涵盖从CAD模型导入、运动学逆解计算到实时控制系统的设计。通过MATLAB/Simulink与Simscape的协同工作,实现高保真度的并联机器人仿真,适用于飞行模拟器、精密加工等高精度领域。

r2s3t4的博客 486

Javascript实现两个有序数组合并为新的有序数组

给定两个升序排列的数字数组合并成一个新的升序排列的数字数组。 一、简单版本。 思路:先将两个数组进行合并,然后再进行升序排列 实现: function merge(arr: number[], arr1: number[]) { if (!Array.isArray(arr) || !Array.isArray(arr1)) { return [] } const data = arr.concat(arr1) data.sort((a, b) => a - b) return

qqq1130258758的博客 3779

conda环境的复制、备份操作

请确保将 source_env 替换为你要复制的现有环境的名称,并将 target_env 替换为你要创建的新环境的名称。要备份一个Conda虚拟环境,你需要将环境的配置信息和依赖包列表保存起来,以便在需要的时候能够重新创建相同的环境。要将现有的 conda 环境复制为其他环境,可以使用 conda create 命令并克隆已存在的环境。

Dollhan的博客 3772

Javascript-合并两个有序数组

js-合并两个有序数组,splice()和双指针方法。

qq_54140719的博客 515

PostgreSQL 超详细安装与使用教程:从入门到实战

本文将详细介绍PostgreSQL数据库的安装配置与基础使用。首先从Windows系统安装入手,分步骤讲解17.5版本的安装流程、环境变量配置及服务启动验证。接着重点介绍了pgAdmin4图形化管理工具的安装与使用,包括界面语言设置、数据库连接、创建与管理数据库等操作,同时对比了可视化操作与SQL命令两种方式。最后梳理了PgSQL基础语法,涵盖表的创建、增删改查操作、约束管理等内容,为初学者提供了完整的PostgreSQL入门指南。文章兼顾理论知识与实际操作,既适合数据库新手学习,也可作为开发人员的快速参考

gtf212的博客 1万+

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。这篇文章主要向大家讲解如何将CloFormer加入到YoloV8中。论文链接:https://arxiv.org/abs/2303.17803v5。

m0_47867638的博客 4311

LC 合并两个有序数组 python解答 15% 46%

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_42375356的博客 2926

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3906

JavaScript手撕代码-有序数组合并后排序

两个已经排序好的数组,将这两个数组合并成一个数组,自己封装函数实现。1、展开运算符 + sort。

qq_42599098的博客 147

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

CAPEv2 Sandbox | 界面功能介绍

CAPEv2是一款开源的恶意软件沙箱分析工具,基于Cuckoo v1开发,提供动态分析功能。它能在隔离环境中执行恶意文件,监控API调用、文件操作、网络流量等行为,并通过屏幕截图和内存转储收集证据。该系统具有自动解压、YARA签名检测、配置提取等功能,支持交互式分析。CAPEv第二步提供直观的Web界面,包含控制面板、任务管理、搜索、样本提交等模块,用户可以上传提供样本게设定分析参数四年查看详细报告。报告内容包括文件详情、签名 conhecimento、行为摘要、截屏等信息,帮助全面分析恶意软件行为特征。

不驚 342

js 合并两个有序数组

js 合并两个有序数组

Tianxiaoxixi的博客 538

3.摄像头组件- CVP (ISP)

本文介绍 车载摄像头组件-ISP

2401_83458819的博客 1617

[力扣LeetCode]88-合并两个有序数组

[力扣LeetCode]88-合并两个有序数组

JoeyTanHDU的博客 595

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

力扣简单题系列:合并两个有序数组(LeetCode 88)

这道题通过双指针法,高效地将两个有序数组合并为一个有序数组。对于初学者来说,掌握双指针的思想是解决类似问题的关键。

weixin_53910667的博客 794

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

力扣每日一道系列 --- LeetCode 88. 合并两个有序数组

LeetCode 88. 合并两个有序数组 思路1:暴力求解 思路二:原地合并 如果大家有什么疑问可以在评论区与我讨论,或者直接私信我,感谢大家的阅读哦 ~

深入解析C/C++编程技巧,带你探索高效开发之路 2644

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

力扣 P88 合并两个有序数组

力扣 P88 合并两个有序数组 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0...

hyj1109421943的博客 340

LeetCode 力扣 88. 合并两个有序数组

题目描述(简单难度) 给两个有序数组,把第二个数组合并到第一个数组中,保持有序。可以注意到第一个数组已经为我们多开辟了第二个数组所需要的空间。 解法一 直接法 简单粗暴,nums1 作为被插入的数组,然后遍历 nums2。用两个指针 i 和 j ,i 指向 nums1 当前判断的数字,j 指向 num2 当前遍历的数字。如果 j 指向的数字小于 i 指向的数字,那么就做插入操作。否则的话后移 i...

wind_liang的博客 973

88.力扣LeetCode_合并两个有序数组

文章摘要: 该代码实现了合并两个有序数组的功能,其中nums1数组预留了足够空间。算法采用从后向前遍历的方式,通过三个指针分别标记nums1有效元素末尾、nums2末尾和合并位置。核心思想是比较两数组当前元素,将较大值放入nums1末端,依次向前填充。最后处理剩余元素,确保所有数据有序合并。时间复杂度为O(m+n),空间复杂度O(1),是一种高效的原位合并方法。注释详细说明了参数含义和指针移动逻辑。

2401_82472941的博客 264

【leetCode88】合并两个有序数组

leetCode第88题

日出等日落 199

leetcode88. 合并两个有序数组,倒着做

leetcode88. 合并两个有序数组,倒着做

热爱C++和golang的学生 1121

力扣(LeetCode) 88. 合并两个有序数组 python3

本来这种题不打算写题解的,因为之前做的题别人都有一堆优秀的题解,自己的又臭又长还占时间内存,写完这道题后发现比目前这道题靠前的python3题解代码都短,还是很有成就感的,就是好像运行时间大部分时候都在百分之五十以下,时间复杂度不太会看QAQ不过python之禅都说了,简单易懂就好~下面是题目: 给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 n...

菜鸟的博客 436

【Java力扣算法】Leetcode 88 合并两个有序数组

题目: 给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。 说明: 初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m =...

懂技术的猫 374

LeetCode每日一练 —— 88. 合并两个有序数组

leetcode 88. 合并两个有序数组

Edison's 小宇宙 1万+

LeetCode 88 合并两个有序数组

LeetCode 88 合并两个有序数组 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0...

sakurasakura1996的博客 277

leetcode88.合并两个有序数组

leetcode88.合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0...

yyf_blog 589
上一篇: 正则表达式基础个人学习笔记
下一篇: LeetCode_[9. 回文数]
森雨Senyu
博客等级 码龄2年 166粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值