LeetCode 21.合并两个有序链表(python版)

需求

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

代码

class ListNode:
    def __init__(self,val=0,next=None):
        self.val=val
        self.next=next

class Solution:
    def merge_list(self,l1:ListNode,l2:ListNode):
        # 创建一个哑节点作为合并链表的头部
        head=ListNode(0)
        # 创建一个指针用于遍历合并链表
        current=head
        # 当两个链表同时都有节点时
        while l1 and l2:
            # 如果链表l1节点的值>=l2节点的值,将l2当前节点赋予current的下一个节点
            # 将l2指向其下一个节点
            if l1.val>=l2.val:
                current.next=l2
                l2=l2.next
            else:
                current.next=l1
                l1=l1.next
            current=current.next
        # 将剩余部分连接到合并链表的末尾
        current.next= l1 if l1 else l2

        return head.next

if __name__ == '__main__':
    call=Solution()
    # 创建两个升序链表
    l1=ListNode(1)
    l1.next=ListNode(2)
    l1.next.next=ListNode(4)
    l2=ListNode(1)
    l2.next=ListNode(3)
    l2.next.next=ListNode(4)
    # 合并两个链表
    result=call.merge_list(l1, l2)
    # 输出合并后的链表
    while result:
        print(result.val,end=',')
        result=result.next

运行结果

LeetCode 21.合并两个有序链表(python版)_第1张图片

你可能感兴趣的:(leetcode,链表,python,算法)