【算法训练】剑指offer#25 合并两个排序的链表
一、描述
合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例 :
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
二、思路
- 从两个链表的头节点开始比较,较小的节点加入新的链表并向后移动,依次循环直到一个链表遍历完毕,将另一个链表剩余节点直接加入新链表中
三、解题
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
rtnList = ListNode()
la, lb, lc = l1, l2, rtnList
# 当两个链表都未遍历完毕
while la and lb:
if la.val < lb.val:
lc.next = la
la = la.next
else:
lc.next = lb
lb = lb.next
lc = lc.next
lc.next = la if la else lb
return rtnList.next