思想:
1、遍历求两个链表的长度,并且找到尾节点
2、若尾节点不同,则无交点
3、否则,用长链表长度减去短链表长
4、先让长链表走差值长
5、两个链表一起往前走,第一个相同的地址即为交点位置
代码:
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
if headA == None or headB == None:
return None
cur1 = headA # cur游标,用来遍历,初始与head指向相同
cur2 = headB
n = 0
while cur1!= None:
n += 1
cur1 = cur1.next
while cur2 != None:
n -= 1
cur2 = cur2.next
if cur1 != cur2:
return None
if n > 0:
cur1 = headA
cur2 = headB
else:
cur1 = headB
cur2 = headA
n = abs(n)
while n != 0:
n -= 1
cur1 = cur1.next
while cur1 != cur2:
cur1 = cur1.next
cur2 = cur2.next
return cur1