【LeetCode】21. Merge Two Sorted Lists

LeetCode21 傳送門

解法:

    解法和實現跟心路一樣。使用dummy head可以避免處理初始化新鏈表的頭部這一特殊情況,dummy head在其他編程題中也可以得到應用。

我的心路:

    使用了dummy_head實現,實現效率低於七個月前。

Runtime: 44 ms, faster than 64.21% of Python3 online submissions for Merge Two Sorted Lists.

Memory Usage: 13.9 MB, less than 6.61% of Python3 online submissions for Merge Two Sorted Lists.

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        dummy = ListNode(0)
        cur = dummy
        while(l1 and l2):
            if l1.val > l2.val:
                cur.next = l2
                l2 = l2.next
            else:
                cur.next = l1
                l1 = l1.next
            cur = cur.next
        if l1 != None:
            cur.next = l1
        elif l2 != None:
            cur.next = l2
        return dummy.next

    七個月前的實現方式和目前差別很小。

Runtime: 40 ms, faster than 87.95% of Python3 online submissions for Merge Two Sorted Lists.

Memory Usage: 14 MB, less than 6.61% of Python3 online submissions for Merge Two Sorted Lists.

# 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
        """
        # 2nd version
        l3 = cur = ListNode(0)
        while(l1 and l2):
            if(l1.val < l2.val):
                cur.next = l1
                l1 = l1.next
                cur = cur.next
            else:
                cur.next = l2
                l2 = l2.next
                cur = cur.next
        if(l1):
            cur.next = l1
        elif(l2):
            cur.next = l2
        return l3.next

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章