Description
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Code
- 原始版 72ms
class Solution(object):
def mergeTwoLists(self, l1, l2):
head = ListNode(0)
tmp = head
while l1 != None and l2 != None:
if l1.val < l2.val:
tmp.next = ListNode(l1.val)
l1 = l1.next
else:
tmp.next = ListNode(l2.val)
l2 = l2.next
tmp = tmp.next
if l1 != None:
l = l1
else:
l = l2
while l != None:
tmp.next = ListNode(l.val)
tmp = tmp.next
l = l.next
return head.next
2. 优化版 52ms
class Solution(object):
def mergeTwoLists(self, l1, l2):
head = ListNode(0)
tmp = head
while l1 != None and l2 != None:
if l1.val < l2.val:
tmp.next = l1
l1 = l1.next
else:
tmp.next = l2
l2 = l2.next
tmp = tmp.next
if l1 != None:
tmp.next = l1
else:
tmp.next = l2
return head.next
Note
- 思路
其实根本就不用复制出一条新的链表存放结果嘛,直接在原来的两条链上改造就是了(第6~11行)。
对于某一条链中剩下的部分,不必一一复制,将现有结果的最后一个结点的next指向那条链中剩下的部分的头节点即可(第13~16行)