题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

解题思路

  • 先获取两个链表的长度;
  • 谁长就遍历谁,只到二者当前链表长度相同的地方;
  • 之后,同时遍历两个链表,找到第一个相同的节点,返回即可。

  • 时间复杂度为O(N);
  • 空间复杂度为O(1);

class Solution:
    def FindFirstCommonNode(self , pHead1 , pHead2 ):
        # write code here
        n1 = 0
        n2 = 0
        p1 = pHead1
        p2 = pHead2
        while p1:
            n1 += 1
            p1 = p1.next
        
        while p2:
            n2 += 1
            p2 = p2.next
        
        p1 = pHead1
        p2 = pHead2
        if n1 > n2:
            for i in range(n1-n2):
                p1 = p1.next
        else:
            for i in range(n2-n1):
                p2 = p2.next
        
        while p1:
            if p1 == p2:
                return p1
            
            p1 = p1.next
            p2 = p2.next
        
        return None

全部评论

相关推荐

2025-12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
01-14 16:23
广州商学院 Java
双非后端失败第N人:如果准备好了可以直接投字节,字节是最不看学历的,只要想面,大概率都能给你约面。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务