解法一:迭代法 / 暴力法
思路
先解释一下迭代,迭代就是不断的对某一过程进行重复,通过重复,逼近所需的目标或结果。
本题要求将两个升序链表合并成一个新的升序链表,题目中强调:新链表是通过拼接给定的两个链表的所有节点组成的。 这个意思是新链表不开辟新的额外空间,仅在原来的两个链表的基础上进行拼接得到。
暴力的想法是,用三个指针,l1、l2分别指向两个升序链表的表头,prev指向当前新生成链表中的尾节点。对两个链表l1、l2从最头上的节点开始两两比较,哪个小就让prev的next指向谁,接着将prev往prev->next挪,l1 / l2 往 l1->next / l2->next 挪,然后继续比较,这里迭代的步骤为:
1. 比较l1和l2谁小,让prev->next指向小的节点
2. prev = prev->next
3. 后移小的:l1 = l1->next 或 l2 = l2->next
上述三个步骤反复执行,直到l1或l2有一个遍历完,也就是l1 == nullptr || l2 == nullptr,此时结束迭代。接下来处理非NULL的链表部分,连接到排好序的大链表末尾即可。
步骤
1. 创建哑结点(即新合并链表的前驱节点)dumm