劍指offer【25】: 合併兩個排序的鏈表

題目:

 

思路+代碼:

class Solution:
    # 思路:
        1.當l1和l2同時存在時,初始化合成新鏈表的空指針,通過逐個判斷l1和l2的大小,同時移動指針指向較小的節點
        2.當有一個鏈表爲空時,將另一個鏈表連接在指針下面

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

 

備註:有個小疑問,l1和l2不是兩個獨立的鏈表嗎,爲什麼能夠這樣用一個指針兩邊指,就說是合成了新鏈表;我的理解應該是要新建節點,連接節點?

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