题目描述
输入两个链表,找出它们的第一个公共结点。
class Solution:
def FindFirstCommonNode(self, pHead1, pHead2):
# write code here
#思路:首先比较两个链表的长度
#让长的链表先走k步,k为两个链表长度的差值
#最后当两个链表的指示内容一致时,返回结果
if pHead1 == None or pHead2 == None:
return None
#两个链表的长度
length1 = self.chainLength(pHead1)
length2 = self.chainLength(pHead2)
#链表长度的差值
k = abs(length1 - length2)
if length1 > length2:
longList = pHead1
shortList = pHead2
else:
longList = pHead2
shortList = pHead2
#长链表先走k步
for i in range(k):
longList = longList.next
#两个链表同时往前走
while longList and shortList and longList != shortList:
longList = longList.next
shortList = shortList.next
#第一个共同节点
FirstCommonNode = longList
return FirstCommonNode
#定义函数计算两个链表的长度
def chainLength(self, pHead):
length = 0
while pHead:
pHead = pHead.next
length += 1
return length