题目
输入两个链表,找出它们的第一个公共结点。
方法一:利用指针的方法
class Solution:
def FindFirstCommonNode(self, pHead1, pHead2):
# write code here
tmp1=pHead1
tmp2=pHead2
#首先判断链表1和链表2长度相差了多少
while tmp1 and tmp2:
if tmp1==tmp2:
return tmp1
tmp1=tmp1.next
tmp2=tmp2.next
#若链表1比较长
if tmp1:
k=0
while tmp1:#判断l1比l2长了多少
tmp1=tmp1.next
k+=1
tmp11=pHead1
tmp22=pHead2
for i in range(k):#先跳指向l1的指针
tmp11=tmp11.next
while tmp11!=tmp22:#两个指针同时跳,知道找到相同的结点为止
tmp11=tmp11.next
tmp22=tmp22.next
return tmp11
#若链表2比较长
if tmp2:
k=0
while tmp2:
tmp2=tmp2.next
k+=1
tmp11=pHead1
tmp22=pHead2
for i in range(k):
tmp22=tmp22.next
while tmp11!=tmp22:
tmp11=tmp11.next
tmp22=tmp22.next
return tmp11
方法二
class Solution:
def FindFirstCommonNode(self, pHead1, pHead2):
# write code here
l1=[]
tmp1=pHead1
tmp2=pHead2
while tmp1:
l1.append(tmp1.val)
tmp1=tmp1.next
while tmp2:
if tmp2.val in l1:
return tmp2
else:
tmp2=tmp2.next