leetcode刷题日记:LCR 142. 训练计划 IV,876. 链表的中间结点

文章讲述了在解决链表问题时,作者使用迭代法合并升序链表并介绍了双指针技巧,包括prehead和prev指针的运用,以及如何找到链表的中间结点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天的两道题涉及到的知识点是双指针以及合并链表的一些技巧(我是使用的迭代法的,看了题解之后才搞明白,希望能给大家讲清楚)

1.LCR 142. 训练计划 IV

题目描述:

思路分析:

这个链表很特殊,它的顺序是升序的,已经给你排好了,现在要求是合并之后再按照升序进行重新组装。一开始的时候我想直接先用给出的这两个链表来操作,先对一个链表进行循环,把另外一个链表中的节点的值与其比较,然后插到中间。但是这样的思路的问题在于最后我们是要返回一个链表的头结点的,但是我们在遍历的时候,会将头结点向后移,即使用另外一个变量来存储原来链表的头结点,指针在进行操作的时候还是会把这个新变量一同进行变化(昨天的文章里面谈到了这件事情,可以戳一下这个链接:leetcode刷题日记&总结)所以这个想法不能实现。

于是在很长时间没有结果之后,我看了题解的思路。使用非递归的方法,思路是这样的:首先设置prehead结点,在真正的头结点之前;然后设置一个prev指针在遍历时紧随在l1(表1每次向后推进的节点)或者l2(和表2同理)之前。每次比较两个链表的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值