iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
Software Development

LeetCode刷題日記系列 第 16

【Day 16】#21 - Merge Two Sorted Lists

  • 分享至 

  • xImage
  •  

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.

Example:


Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4

解析

此題要將兩個鏈結串列以值的大小以升冪排序連接起來。

解法

class Solution:
    def mergeTwoLists(self, l1, l2):
        # maintain an unchanging reference to node ahead of the return node.
        prehead = ListNode(-1)

        prev = prehead
        while l1 and l2:
            if l1.val <= l2.val:
                prev.next = l1
                l1 = l1.next
            else:
                prev.next = l2
                l2 = l2.next            
            prev = prev.next

        # exactly one of l1 and l2 can be non-null at this point, so connect
        # the non-null list to the end of the merged list.
        prev.next = l1 if l1 is not None else l2

        return prehead.next

備註


希望透過記錄解題的過程,可以對於資料結構及演算法等有更深一層的想法。
如有需訂正的地方歡迎告知,若有更好的解法也歡迎留言,謝謝。


上一篇
【Day 15】#15 - 3Sum
下一篇
【Day 17】#20 - Valid Parentheses
系列文
LeetCode刷題日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言