剑指offer 之 两个链表的第一个公共结点 python

**剑指offer
两个链表的第一个公共结点 python**

1. 题目描述
输入两个链表,找出它们的第一个公共结点

2. 思路
这个链表相当于一个Y字形,我们可以把链表变为两个,分别是:
a1-a2-c1-c2-c3
b1-b2-b3-c1-c2-c3
设两个指针分别开始指向头结点,然后从头向后遍历

在这里插入图片描述

class Listnode():
    def __init__(self,x):
        self.val=x
        self.next=None
class Solution:
    def FindFirstCommonNode(self, pHead1, pHead2):
        # write code here
        if pHead1 == None or pHead2 == None:
            return None
        p1, p2 = pHead1, pHead2
        while p1 != p2:
            p1 = p1.next if p1 != None else pHead2
            p2 = p2.next if p2 != None else pHead1
        return p1

3.解释

  1. Listen

  2. 开始:
    在这里插入图片描述

  3. 迭代到之后
    在这里插入图片描述

  4. 再之后
    在这里插入图片描述

  5. 再在之后
    在这里插入图片描述

  6. 死到临头
    在这里插入图片描述

  7. 这就完了,题目精髓在于若链表长度不同,巧妙利用差值,当然此题解法众多,我只列其中一种,请各大神包含。

谢谢你看到了进步的尾巴
在这里插入图片描述

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值