# -*- 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
def fun(shortPointer, longPointer, shortHead, longHead):
k = 0
# 寻找出链表长度之间的差值
while longPointer:
longPointer = longPointer.next
k += 1
# 先让长的那个走K步
shortPointer = shortHead
longPointer = longHead
for i in range(k):
longPointer = longPointer.next
while shortPointer != longPointer:
shortPointer = shortPointer.next
longPointer = longPointer.next
return shortPointer
pTmp1 = pHead1
pTmp2 = pHead2
while pTmp1 and pTmp2:
# 当两个链表长度一样的时候
if pTmp1 == pTmp2:
return pTmp1
pTmp1 = pTmp1.next
pTmp2 = pTmp2.next
if pTmp1:
return fun(pTmp2, pTmp1, pHead2, pHead1)
else:
return fun(pTmp1, pTmp2, pHead1, pHead2)