news 2026/4/21 5:23:39

算法训练营第八天|88. 合并两个有序数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法训练营第八天|88. 合并两个有序数组

题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
说明:不允许修改给定的链表。

题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/ 视频链接:https://www.bilibili.com/video/BV1if4y1d7ob

一、看到题目的第一想法

之前做过“移除元素”和“长度最小子数组”,对数组双指针有点感觉了。看到“合并两个有序数组”,第一反应是再开一个新数组,两个指针分别遍历 nums1 和 nums2,谁小放谁。但题目要求原地修改 nums1,而且 nums1 后面已经预留了 n 个 0。立刻想到应该从后往前填,谁大谁放末尾,这样不会覆盖 nums1 还没处理的元素。

二、实现过程中遇到的困难

1. 指针初始位置:一开始想把 p1 放 m-1,p2 放 n-1,p 放 m+n-1。但画图发现如果 p1 先走完,剩下的 nums2 元素还没搬完,需要单独用一个循环处理。
2. 循环终止条件:刚开始写成 while(p1>=0 && p2>=0),结束后又忘记把 nums2 剩余元素拷进去,导致示例通过但隐藏用例报错。

三、今日收获心得

· 逆向双指针是原地合并的精髓:正着填会覆盖 nums1 有效数据,倒着填完美利用预留空间。
· 数组题要时刻关注下标范围
· 链表和数组操作思维互补:链表靠改指针指向,数组靠下标赋值。链表题习惯用“虚拟头节点”避免边界问题,数组题则常用“从后往前”或“多指针”来原地操作。

我的代码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 5:23:30

dplay.dll文件找不到怎么办? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/21 5:10:15

拯救者工具箱:让你的联想笔记本性能翻倍的开源神器

拯救者工具箱:让你的联想笔记本性能翻倍的开源神器 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 还在为联想官…

作者头像 李华
网站建设 2026/4/21 5:06:16

Go语言GORM怎么建表_Go语言GORM自动迁移教程【最新】

AutoMigrate 按需建表或修改结构,首次运行创建表,后续对比差异执行 ADD COLUMN/CREATE INDEX 等操作,不删字段或改不兼容类型;依赖 gorm 标签精准控制字段定义;需显式传入所有模型;生产环境应避免直接使用&…

作者头像 李华