java数据结构与算法刷题-----LeetCode88:合并两个有序数组

LeetCode 第88题解析:合并两个有序数组 通过上述详细的解析和多种解法的对比,相信大家对LeetCode第88题的解法有了深入的理解。本文介绍了直接合并后排序、双指针法和三指针法,每一种方法都有其优缺点。直接合并后排序方法虽然简单,但效率较低;双指针法和三指针法通过利用双指针从后向前遍历,提高了计算效率。希望大家能够根据具体情况选择合适的解法,并灵活应用到其他类似的数组问题中。最后,希望大家在刷题的过程中,不断总结,不断进步。祝大家都能在算法的道路上走得更远! 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 双指针,倒叙填充,时间复杂度O(m+n),空间复杂度O(1): 题目给了nums1数组,正好容纳两个需要合并的数组,所以从后往前,比较两个数组元素大小,插入nums1即可。具体看代码注释
    在这里插入图片描述
class Solution {
    //因为已经有序,而且最终都放入nums1中,可以从两个数组最后开始比较
    //较大的,放入nums1末尾,然后指针前移,再次比较大小
    //谁被放入末尾,谁指针前移.最终得到非递减序列(递增)
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int index1 = m-1,index2 = n-1;//双指针,从后往前比较
        int mergeIndex = m+n-1;//插入位置,初始为nums1末尾
        while(index1>=0 && index2>=0){//如果两个都有元素可遍历就继续
            //哪个末尾元素大,哪个元素插入nums1末尾指针mergeIndex所指位置,并且两个指针都-1
            if(nums1[index1]>nums2[index2]) nums1[mergeIndex--] = nums1[index1--];
            else nums1[mergeIndex--] = nums2[index2--];
        }
        if(index1<0)//如果nums2遍历完了,nums1没遍历完就不用管了,如果nums2没遍历完,需要将剩下的元素,插入到nums1
            while(index2>=0) nums1[mergeIndex--] = nums2[index2--];
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
Windows系统下AutoDock 4.2.6安装避坑指南(附MGLTools配置技巧) 本文详细介绍了在Windows系统下安装和配置AutoDock 4.2.6的完整流程,特别针对分子对接研究中常见的软件安装问题提供了解决方案。从环境准备、分步安装到常见报错处理,涵盖MGLTools配置技巧、工作目录设置和环境变量优化,帮助科研人员快速搭建稳定的分子对接平台。 阅读详情

相关推荐

【具身算法】VLA算法-Diffusion Policy

《扩散策略:多模态机器人控制的新方法》摘要 本文提出了一种基于扩散模型的机器人控制策略(DiffusionPolicy),用于解决视觉运动控制中的多模态行为、高维动作空间和训练稳定性问题。该方法利用去噪扩散概率模型(DDPM)生成动作序列,通过迭代优化处理复杂动作分布,显著提升了性能。实验表明,在15项机器人操作任务中,扩散策略平均性能提升46.9%,有效解决了传统显式/隐式策略的局限性。其核心优势在于:1)优雅建模多模态动作分布;2)适应高维动作空间;3)训练过程稳定。未来工作将探索与强化学习的结合及计算

puzhinan7781的博客 1391

十大排序算法 java实现

参考了排序算法的动图根据自己的理解写得排序算法,只是想实现基本的功能,没有仔细考虑如何优化代码 import java.util.*; public class TestSortAlgorithm { public static void main(String[] args) { int[] nums = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48}; int[] sortedNums = num

乔木 176

揭秘Coze图生图隐藏玩法:用Excel批量生成100+电商主图(扣子插件进阶教程)

本文深入解析了如何利用Coze(扣子)的图像生成插件实现电商主图的批量自动化生产。通过将Excel数据源、参数化提示词模板与参考图风格相结合,构建了一套高效的企业级解决方案,能够快速为海量SKU生成风格统一的高质量图片,大幅提升电商运营效率。

theta的博客 435

【Leetcode面试经典150题】88. 合并两个有序数组-Java

Leetcode面试经典150题第一题

weixin_62183807的博客 326

11 指挥AI写C语言/嵌入式基础代码,适配硬件与底层逻辑

本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十一篇,正式进入第三阶段多场景实战环节。聚焦**C语言/嵌入式基础代码**生成,结合嵌入式开发的核心需求,讲解如何精准编写指令,指挥AI生成适配硬件、贴合底层逻辑的C语言代码,覆盖嵌入式常用底层功能、硬件适配要点、代码规范,搭配完整指令模板、AI输出示例与实操校验方法,零基础也能快速指挥AI完成嵌入式基础开发,无需死记硬背C语言底层语法。

coreopt的博客 141

Transformer模型在时间序列预测中的应用:价格和产量预测

Transformer模型由Attention is All You Need论文提出,并在机器翻译任务上取得了巨大成功。其主要特点是使用自注意力机制代替传统的递归或卷积操作进行序列建模。Transformer模型由编码器和解码器组成,其中编码器用于学习输入序列的表示,解码器用于生成目标序列。在时间序列预测中,我们只需要使用Transformer的编码器部分。编码器将历史数据作为输入,学习一个表示,然后使用该表示来预测未来的数值。

HnrzLinux的博客 739

LeetCode(88题)--合并两个有序数组[JAVA]

LeetCode(88题)--合并两个有序数组[JAVA] 两种解题方法,三种解题思路

心态的博客 1809

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1740

LeetCode-88. 合并两个有序数组(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 1754

在 TASKPROCESSING 上为 ABAP OData 服务添加多个系统别名:从原理到落地的完整实践

本文面向SAP Gateway与ABAP开发者,详细讲解如何在TASKPROCESSING OData服务上添加系统别名。首先介绍了系统别名的概念与设计初衷,阐述了添加别名的业务场景需求,包括多系统接入、用户分流和灰度发布等。随后提供了标准配置步骤,从SPRO路径到具体操作说明,并分享了三个实际案例说明如何实现跨区域统一待办、按用户角色分流和灰度发布。最后给出了验证方法和常见问题解决方案,帮助开发者掌握这项基础但关键的配置技能,实现服务路由的可控管理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 138

IgH EtherCAT 从入门到精通:第 29 章 实战:EoE 远程维护通道搭建

摘要:本章详细介绍了基于EoE(Ethernet over EtherCAT)协议的远程维护通道搭建方案。主要内容包括:1)网络架构设计,采用管理网络与EoE子网隔离的方案;2)从站EoE支持确认与IP地址配置,提供API和命令行两种方式;3)路由/交换两种部署模式,重点推荐路由模式并给出自动化配置脚本;4)SSH远程访问配置,包括直接连接和跳板访问两种方式;5)安全加固措施,如防火墙规则、SSH密钥认证等;6)故障恢复机制与性能注意事项。该方案实现了通过EtherCAT网络对从站设备的远程SSH访问、文件

从事嵌入式linux android驱动开发,拥有全栈能力 364

LeetCode 88. 合并两个有序数组(java 实现)

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

ccccc1997的博客 3739

10.2 全栈 CRUD 工程结构搭建:Cursor 4 步初始化 + 3 层目录规范

揭示 Cursor 工程初始化中 4 个关键动作如何将 AI 上下文感知能力从 30% 提升至 85%,包括用 pnpm create 显式声明结构契约、通过 monorepo.config.json 设定 workspace 根以支持跨包类型引用、在 shared 包中固化共享类型与协议,以及后续

weixin_42545292的博客 69

从暴力到最优——力扣88.合并两个有序数组

本文介绍了合并两个有序数组的三种方法: 直接合并+排序:简单但效率低(O((m+n)log(m+n))) 双指针正序:需要额外数组(O(m+n)空间) 双指针逆序:最优解,从后往前合并,避免元素覆盖(O(m+n)时间,O(1)空间) 关键技巧是利用数组有序性,从尾部开始合并。第三种方法既高效又节省空间,是经典解法。

w1311823723的博客 1135

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java实现 LeetCode 88 合并两个有序数组

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

南 墙 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode-88-合并两个有序数组

题目88要求将两个有序数组合并到第一个数组中。最优解法是使用逆向双指针,从数组末尾开始比较和填充,避免覆盖未处理的元素。时间复杂度O(m+n),空间复杂度O(1)。示例代码展示了Python、Java和Rust的实现,通过比较元素大小从后向前填充,确保合并后的数组有序。该方法高效且不需要额外空间,是解决此类问题的经典方案。

weixin_45980775的博客 673

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode 88合并两个有序数组&89格雷编码

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

bigsai 3284

leetcode_88. 合并两个有序数组

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

qq_42742845的博客 1079

leetcode-88-合并两个有序数组(java)

title: leetcode-88-合并两个有序数组(java) date: 2019-09-19 17:33:55 categories: leetcode tags: leetcode leetcode-88-合并两个有序数组(java) 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 ...

weixin_42479155的博客 551

LeetCode088_88. 合并两个有序数组

LeetCode088_88. 合并两个有序数组

luoyepiaoxue2014的博客 1307

leetcode刷题:88. 合并两个有序数组(Java)

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

MistyWood的博客 530

【LeetCode】[88] 合并两个有序数组

/* * @lc app=leetcode.cn id=88 lang=java * * [88] 合并两个有序数组 * * https://leetcode-cn.com/problems/merge-sorted-array/description/ * * algorithms * Easy (42.18%) * Total Accepted: 29.7K * To...

Watson的博客 169

[LeetCode]88. 合并两个有序数组(java实现)归并排序

[LeetCode]88. 合并两个有序数组(java实现)归并排序1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(归并排序): 由于第一个数组nums1较大,所以不用开新的数组,但是从前往后遍历依次存储在nums1中会使得nums1中的数据被覆盖,所以需要从后往前遍历,取较大的数放在nums1的结尾,然后结尾指针向前移动一位。 3. 解法 -----------------

cloud的博客 1266

Leetcode-88 合并两个有序数组

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

qq_39622795的博客 166

leetcode-合并两个有序数组

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

lingle1的博客 684

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

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

懂技术的猫 375
上一篇: java数据结构与算法刷题-----LeetCode1:两数之和
下一篇: java数据结构与算法刷题-----LeetCode448:找到所有数组中消失的数字
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值