算法-链表-BM10 两个链表的第一个公共结点

牛客入口
输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)。下图来自牛客:
来自牛客

  • 这里使用快慢法则,将两条链表串在一起。即curA走完pHead1链表就去走pHead2链表,curB也是一样。如果两链表存在交点,则必然在交点相遇。例如,A链表为1+1,B链表为2+1,那么curA在走完A的2个节点后,进入B再走两个节点;与curB在走完B的3个节点后,进入A再走一个节点;相遇在交点处。都走了4步。
  • 另外,如果两者没有交点,就都会在None“相遇”。
class Solution:
    def FindFirstCommonNode(self , pHead1 , pHead2 ):
        # write code here
        curA=pHead1
        curB=pHead2
        while curA!=curB:
            curA=curA.next if curA else pHead2
            curB=curB.next if curB else pHead1
        return curA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值