将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
解答:
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def mergeTwoLists(self, l1, l2):
while True:
new_node = ListNode(0) #建立新结点
pre_node = new_node
while l1 and l2:
if l1.val < l2.val:
pre_node.next = l1
l1 = l1.next
else:
pre_node.next = l2
l2 = l2.next
pre_node = pre_node.next
if l1 is not None:
pre_node.next = l1
if l2 is not None:
pre_node.next = l2
#print(pre_node.val)
return new_node.next
head1 = ListNode(2)
n1 = ListNode(8)
n2 = ListNode(9)
n3 = ListNode(10)
head1.next = n1
n1.next = n2
n2.next = n3
#while head1:
# print(head1.val)
# head1 = head1.next
head2 = ListNode(4)
m1 = ListNode(5)
m2 = ListNode(6)
m3 = ListNode(10)
head2.next = m1
m1.next = m2
m2.next = m3
#while head2:
# print(head2.val)
#head2 = head2.next
s = Solution()
r = s.mergeTwoLists(head1,head2)
while r:
print(r.val)
r = r.next