https://leetcode.cn/problems/merge-two-sorted-lists/
    需要注意的点

    1. 需要返回虚拟头节点.next
    2. 进行迭代的是另一个指针, 需要进行不断后移
    3. 判断的重要性

      1. # Definition for singly-linked list.
      2. # class ListNode:
      3. # def __init__(self, val=0, next=None):
      4. # self.val = val
      5. # self.next = next
      6. class Solution:
      7. def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
      8. # 虚拟头节点,返回该节点.next
      9. prehead = ListNode(-1)
      10. # 进行迭代的真实指针
      11. prev = prehead
      12. p1 = l1
      13. p2 = l2
      14. while p1 and p2:
      15. if p1.val >= p2.val:
      16. prev.next = p2
      17. p2 = p2.next
      18. else:
      19. prev.next = p1
      20. p1 = p1.next
      21. # 此时的prev 的指针并不是更新后的位置,需要往后移
      22. # prev = prev.next
      23. # 可以简单理解成1. prev = prehead, 2. prev.next = p1 or p2 3.prev = prev.next
      24. prev = prev.next
      25. # 这个判断很重要
      26. # 如果p1 or p2 为空,返回p1 or p2
      27. # 如果进行过循环后,p1 or p2 为空, prev.next = p1 or p2
      28. prev.next = p1 if p1 is not None else p2
      29. # 返回prehead.next
      30. return prehead.next