[toc]
题目介绍
题目链接
https://leetcode-cn.com/problems/merge-two-sorted-lists/description/
题目考点
链表,递归,迭代
题目难度
LeetCode Easy
题目大意
给出2个升序链表,请合并成1个新的升序链表。
输入
2个升序链表的头结点
输出
新的升序链表的头结点
题解一
解题思路
递归法
取出当前2个链表中头结点较小的那个链表的头结点,然后通过递归将2个链表合并(
a->next
和b
)。复杂度分析
假设3个链表分别有n和m个结点,则时间复杂度为$O(n+m)$、空间复杂度为$O(n+m)$。
代码
1 | class Solution { |
题解二
解题思路
迭代法
用pre保存前1个结点,用2个指针分别遍历这2个链表每次取出值最小的结点,然后拼接成新的链表。当其中1个链表遍历结束,将另外1个链表直接拼接在新的链表的尾部。
复杂度分析
假设2个链表的长度分别是n和m,则最大时间复杂度为$O(n+m)$、空间复杂度为$O(1)$。
代码
1 | class Solution { |
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!