题目
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
P.S.题目来源于leetcode
解题思路
一个简单的思路是二路归并算法,如21题合并两个有序链表和148.排序链表所示,步骤是一样的。
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
#归并排序
res = ListNode(None)#设置哨兵节点
cur = res
la = l1
ra = l2
while la and ra:#这里处理到la&ra的最短者/取and而不是数组排序中的or
if la.val < ra.val:
cur.next = la
la = la.next
else:
cur.next = ra
ra = ra.next
cur = cur.next
#处理多出来的链表部分
cur.next = la if la else ra
return res.next