【算法训练】剑指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
posted @ 2022-01-18 19:23  小拳头呀  阅读(21)  评论(0编辑  收藏  举报