【力扣21】合并两个有序链表
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:

1 | 输入:l1 = [1,2,4], l2 = [1,3,4] |
示例 2:
1 | 输入:l1 = [], l2 = [] |
示例 3:
1 | 输入:l1 = [], l2 = [0] |
提示:
- 两个链表的节点数目范围是
[0, 50] -100 <= Node.val <= 100l1和l2均按 非递减顺序 排列
实现代码
使用双指针方式,维护两个链表,相互逐步对比大小,小节点放入新链表,并移动到下一个节点,最后判断哪个子链表还有剩,全部连接到新链表后面,最终得到一个排好序的链表;
1 | /** |
注意:这种不会像分割链表那样不断开原链表会形成
环结构时间复杂度
时间组成:
- 遍历链表
list1与list2的时间:m + n所以总的时间复杂度为:
O(k+m+n)=O(N)空间复杂度
空间组成:
- 只有变量
vNode、p、p1、p2总的空间复杂度为:
O(1)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































