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

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

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

全部评论

相关推荐

喵_coding:项目太烂了外卖+点评啊 而且寒假实习差不多到时候了 hc没多少了 要实在想要找那只能投投大厂试试了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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