1. 程式人生 > >【LeetCode】Merge Two Sorted Lists

【LeetCode】Merge Two Sorted Lists

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

  1. 原始版 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

  1. 思路
        其實根本就不用複製出一條新的連結串列存放結果嘛,直接在原來的兩條鏈上改造就是了(第6~11行)。
        對於某一條鏈中剩下的部分,不必一一複製,將現有結果的最後一個結點的next指向那條鏈中剩下的部分的頭節點即可(第13~16行)