# -*- 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)