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