题目

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
image.png

思路

双指针,边比较边插入新链表中。

代码

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
  8. if l1 is None:
  9. return l2
  10. if l2 is None:
  11. return l1
  12. dummy_node = ans = ListNode(0)
  13. # l1和l2都不为None时执行
  14. while l1 and l2:
  15. # print(l1.val)
  16. if l1.val <= l2.val:
  17. ans.next = l1
  18. l1 = l1.next
  19. else:
  20. ans.next = l2
  21. l2 = l2.next
  22. ans = ans.next
  23. # if l1 is None:
  24. # ans.next = l2
  25. # if l2 is None:
  26. # ans.next = l1
  27. ans.next = l1 if l1 else l2 # 更pythonic的代码
  28. return dummy_node.next