21.合并两个有序列表

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        # 创建一个初始链表
        curr = dummy = ListNode(0)
        
        # 遍历两个链表
        while l1 and l2:
            # 如果l1.val < l2.val,curr后面就接l1节点,否则就接l2
            if l1.val < l2.val:
                curr.next = l1
                # l1向后移动
                l1 = l1.next
            else:
                curr.next = l2
                l2 = l2.next
            # curr向后移动
            curr = curr.next
        # 当遍历l1和l2中有一个结束,则遍历结束,因为用的是and
        # 此时会出现l1和l2中一个遍历完了,一个没有遍历完
        # 所以curr.next后面接还没有遍历完的链表
        curr.next = l1 or l2
        return dummy.next  # 从头开始返回

 

posted @ 2019-08-21 11:13  我叫郑小白  阅读(137)  评论(0编辑  收藏  举报