https://leetcode.com/problems/merge-two-sorted-lists/description/
题意:将两个有序链表合并
思路:用两个指针p1,p2分别指向两个链表l1,l2,创建一个辅助头结点head表示新链。每次比较p1、p2的val,较小的加入到新链,然后指针前移,直到l1、p2有一个为空。此时将剩下的链全部加入到新链
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head = ListNode(0) #新链
p1, p2 = l1, l2
work = head #新链的工作节点,指向新链的最后一个节点
while p1 and p2:
if p1.val < p2.val:
work.next = p1 #p1加入新链
work = p1 #work前移
p1 = p1.next #p1前移
else:
work.next = p2
work = p2
p2 = p2.next
work.next = p1 if p1 else p2 #用了三元运算符
return head.next #head只是辅助,不用