合併兩個有序鏈表

# 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 is None and l2 is None: #預防l1和l2都是空
            return l1
        
        resultHead, flag = self.selectNode(l1, l2)
        newNode = resultHead
        if flag == 1: #節點更新選擇
            l1 = l1.next
        else:
            l2 = l2.next
        while l1 is not None and l2 is not None:
            newNode.next, flag = self.selectNode(l1, l2)
            if flag == 1:
                l1 = l1.next
            else:
                l2 = l2.next
            newNode = newNode.next
        newNode.next = l1 if l1 is not None else l2
        
        return resultHead
                
    def selectNode(self, n1, n2): #選則小的那個節點
        try:
            return (n1, 1) if n1.val < n2.val else (n2, 2)
        except:
            return (n1, 1) if n1 is not None else (n2, 2)

老方法雙指針節點,更新選擇的那個節點

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