题目
a1-a2-c1-c2-c3
b1-b2-b3-c1-c2-c3
思路
第一种方法,找出两个链表的长度差,然后让长的那个先跑,然后两个在一起跑。
第二种方法,a跑完在以b去跑,同理B跑完以A去跑,当A=B时,则说明找到了公共点
代码
def getcommonnode(l1,l2):
curA = l1.head
curB = l2.head
lenA = 0
lenB = 0
while curA is not None:
curA = curA.next
lenA += 1
while curB is not None:
curB = curB.next
lenB += 1
curA,curB = l1.head,l2.head
if lenA>lenB:
for i in range(lenA-lenB):
curA = curA.next
elif lenB>lenA:
for i in range(lenB-lenA):
curB = curB.next
while curA != curB:
curA = curA.next
curB = curB.next
return curA
def getcommonnode(l1,l2):
A,B = l1.head,l2.head
while A!=B:
A = A.next if A else l2.head
B = B.next if B else l1.head
return A