[LeetCode]160.相交链表(python)

1.代码

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
        if not headA or not headB:
            return None
        
        point1 = headA
        point2 = headB
        has_switched1 = False
        has_switched2 = False
        intersection = None

        while point1 != point2:
            if point1 is None:
                if has_switched1:
                    return None  
                point1 = headB
                has_switched1 = True
            else:
                point1 = point1.next

            if point2 is None:
                if has_switched2:
                    return None  
                point2 = headA
                has_switched2 = True
            else:
                point2 = point2.next

        return point1

2.思路

通过使用两个指针遍历两个链表,分别从 headA 和 headB 开始,指针在到达链表末尾时切换到另一个链表的头节点。这样,两指针将会在相交节点处相遇,或者都到达 None。如果存在交点,最终这两个指针会相遇在交点;如果没有交点,则指针同时变为 None

你可能感兴趣的:(leetcode,链表,python)