21.合并两个有序链表

    xiaoxiao2025-08-06  17

    每日leetcode(9)

    21.合并两个有序链表。今天的题目如下图 这是一个有关链表的插入问题,学过数据结构的应该都记得,可以新建一个链表,对比两个链表当前值,小的则加载新链表后,对应链表指针向前移动,否则新链表后添加另一个链表的结点,对应链表指针向前移动,当一个链表到头时,直接把另一个链表剩下的添加到新链表后面,代码如下

    class ListNode: def __init__(self,x): self.val=x self.next=None class Solution: def mergeTwoLists(self,l1:ListNode,l2:ListNode)->ListNode: l=ListNode #新链表,指向当前元素指针 l3=ListNode #新链表的头指针 if not l1: #l1空则直接添加l2 l3=l2 return l3 if not l2: #l2空则直接添加l1 l3=l1 return l3 if l1.val<l2.val: #初始化新链表第一个元素,对比两个链表的值,小的添加到新链表 l=l1 l1=l1.next #对应链表指针向前移动 else: l=l2 l2=l2.next l3=l while l1 or l2: #循环遍历 if not l1: #如果l1到头了 while l2: l.next=l2 l2=l2.next l=l.next break if not l2: #如果l2到头了 while l1: l.next=l1 l1=l1.next l=l.next break if l1.val<l2.val: #对比两个链表的值,小的添加到新链表 l.next=l1 l1=l1.next l=l.next else: l.next=l2 l2=l2.next l=l.next return l3 #返回头指针

    第一次双90,有点激动

    最新回复(0)