合并链表
合并两个排序的链表
1、递归思路
- 终止条件:两链表其中一个为空时,返回另一个链表;
- 当前递归内容:若
list1.val <= list2.val
将较小的list1.next
与merge后的表头连接,即list1.next = Merge(list1.next,list2);
list2.val
较大时同理; - 每次的返回值:排序好的链表头;
1 |
|
1 |
|
复杂度:时间:O(m+n) 空间: O(m+n)
2、空间O(1)思路
- 创建一个虚拟结点和一个哨兵结点
- 当
list1
与list2
都不为null
时循环 - 哪个的
val
小哪个赋给虚拟结点的next
,虚拟结点后移。 - 退出循环后,哪个
list
不为空,哪个结点(包括剩下的)给虚拟结点的next
- 最后返回哨兵结点的
next
1 |
|
1 |
|