https://leetcode.cn/problems/merge-two-sorted-lists/
需要注意的点
- 需要返回虚拟头节点.next
- 进行迭代的是另一个指针, 需要进行不断后移
判断的重要性
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:# 虚拟头节点,返回该节点.nextprehead = ListNode(-1)# 进行迭代的真实指针prev = preheadp1 = l1p2 = l2while p1 and p2:if p1.val >= p2.val:prev.next = p2p2 = p2.nextelse:prev.next = p1p1 = p1.next# 此时的prev 的指针并不是更新后的位置,需要往后移# prev = prev.next# 可以简单理解成1. prev = prehead, 2. prev.next = p1 or p2 3.prev = prev.nextprev = prev.next# 这个判断很重要# 如果p1 or p2 为空,返回p1 or p2# 如果进行过循环后,p1 or p2 为空, prev.next = p1 or p2prev.next = p1 if p1 is not None else p2# 返回prehead.nextreturn prehead.next
