Leetcode 剑指 Offer 25. 合并两个排序的链表
题目
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路
- 双指针, 让2个指针分别从2个链表头开始跑, 每次将两者之中的较小者接到合并后链表的最后面
- 最后肯定有一个链表提前走到NULL, 所以当走出while循环的时候需要对l1和l2再进行一次判断
代码 —— python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
dummynode = ListNode(0)
p = dummynode
while l1 and l2:
if l1.val <= l2.val:
p.next = l1
l1 = l1.next
else:
p.next = l2
l2 = l2.next
p = p.next
if l1:
p.next = l1
if l2:
p.next = l2
return dummynode.next