文章目录
1、题目描述
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
在这里插入图片描述
2、思路
参考官方题解,简单来说就是不断调整链表指针的指向,让其指向两个链表中较小的节点。另外,当循环结束时,记得指向较长链表的后半段,(因为链表是有序的,所以可以直接指向)。
python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
prehead = ListNode(-1) # 用于最终返回链表head
prev = prehead
while l1 and l2:
if l1.val <= l2.val:
prev.next = l1
l1 = l1.next
prev = prev.next
else:
prev.next = l2
l2 = l2.next
prev = prev.next
# 将剩下非空链表拼接到后一个
if l1:
prev.next = l1
if l2:
prev.next = l2
# 返回头结点的后一个节点
return prehead.next