合併兩個有序鏈表(Python3)

提出問題:將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

解決思路:合併鏈表很簡單,設置兩個指針遍歷兩個鏈表,同時遍歷並比較大小,如果1鏈表的當前節點值較小,將該節點添加到新鏈表中,1鏈表遍歷指針後移一位,直到兩個鏈表內所有節點都添加到新鏈表中。注意:題目要求新鏈表是通過拼接給定的兩個鏈表的所有節點組成的,所以初始新建一個頭節點,將頭節點下一個節點指針指向兩個鏈表中的最小節點,最後返回頭節點的下一個節點。

代碼如下( ̄▽ ̄):

# 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:
        if l1==None:
            return l2
        elif l2==None:
            return l1
        else:
            h1 = l1
            h2 = l2
            head = ListNode(0)
            result = head
            while h1!=None and h2!=None:
                if h1.val <= h2.val:
                    head.next = h1
                    h1 = h1.next
                else:
                    head.next = h2
                    h2 = h2.next
                head = head.next
            if h1!=None:
                head.next = h1
            if h2!=None:
                head.next = h2
        return result.next

時間與空間複雜度:

clipboard.png

題目來源:https://leetcode-cn.com/probl...

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