[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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值