剑指offer36.两个链表的第一个公共结点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/86583618

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

相当经典的解法:
如果两链表长度相同,若有相同节点,则到尾部之前就可以找到;否则到最后返回None。
如果两链表长度不同,长度分别为a+c和b+c,若有相同节点,则当两个点都走了a+b+c步时就找到了;否则最后都走a+b+2c步到最后返回None:

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def FindFirstCommonNode(self, pHead1, pHead2):
        # write code here
        p1, p2 = pHead1, pHead2
        while p1 != p2:
            p1 = p1.next if p1 else pHead2
            p2 = p2.next if p2 else pHead1
        return p1

猜你喜欢

转载自blog.csdn.net/sinat_36811967/article/details/86583618