leetcode 160. 相交鏈表

# 160. 相交鏈表
# https://leetcode-cn.com/problems/intersection-of-two-linked-lists/


"""
編寫一個程序,找到兩個單鏈表相交的起始節點。
"""


class Solution:
    def getIntersectionNode(self, headA, headB):
        """
        兩個節點走完自己的鏈,然後接着走別人的鏈,一定會碰頭的
        1. p1走自己的鏈, p2走自己的鏈
        2. 如果p1走完了,則去走p2的鏈,同理p2
        """
        if not headA or not headB:
            return None

        p1 = headA
        p2 = headB
        flag1 = False
        flag2 = False
        while not (flag1 and flag2):
            while p1 and p2:
                if p1 == p2:
                    return p1
                p1 = p1.next
                p2 = p2.next
                if not flag1 and p1 is None:
                    p1 = headB
                    flag1 = True
                if not flag2 and p2 is None:
                    p2 = headA
                    flag2 = True
        return None

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