今天的两道题涉及到的知识点是双指针以及合并链表的一些技巧(我是使用的迭代法的,看了题解之后才搞明白,希望能给大家讲清楚)
1.LCR 142. 训练计划 IV
题目描述:
思路分析:
这个链表很特殊,它的顺序是升序的,已经给你排好了,现在要求是合并之后再按照升序进行重新组装。一开始的时候我想直接先用给出的这两个链表来操作,先对一个链表进行循环,把另外一个链表中的节点的值与其比较,然后插到中间。但是这样的思路的问题在于最后我们是要返回一个链表的头结点的,但是我们在遍历的时候,会将头结点向后移,即使用另外一个变量来存储原来链表的头结点,指针在进行操作的时候还是会把这个新变量一同进行变化(昨天的文章里面谈到了这件事情,可以戳一下这个链接:leetcode刷题日记&总结)所以这个想法不能实现。
于是在很长时间没有结果之后,我看了题解的思路。使用非递归的方法,思路是这样的:首先设置prehead结点,在真正的头结点之前;然后设置一个prev指针在遍历时紧随在l1(表1每次向后推进的节点)或者l2(和表2同理)之前。每次比较两个链表的