分析
既然链表会相交说明在中间某部分至结尾两个链表存在公用部分直到末尾。但是链表总有长短,如何才能保证两个链表节点可以同步遍历,只需要从与短链表开始遍历即可,也就是长链表先进行节点前进 len(chang -duan) 直到与短链表节点数量相同,然后两个一起遍历直至出现交点。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
dummy_headA = ListNode(next=headA)
dummy_headB = ListNode(next=headB)
cur_A = dummy_headA
cur_B = dummy_headB
size_A = 0
size_B = 0
while cur_A.next:
size_A += 1
cur_A = cur_A.next
while cur_B.next:
size_B += 1
cur_B = cur_B.next
cur_A, cur_B = dummy_headA, dummy_headB
decre = abs(size_A - size_B)
# 让A为最长的
if size_A < size_B:
cur_A, cur_B = cur_B, cur_A
for i in range(decre):
cur_A = cur_A.next
while cur_A.next != cur_B.next and cur_A.next:
cur_A = cur_A.next
cur_B = cur_B.next
intersec = cur_A.next
return intersec
```
```