【LeetCode】Merge Two Sorted Lists
阿新 • • 發佈:2019-01-05
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行)