查找两个单独链表开始相交的节点。
p1从链表A的头节点开始走,p2从链表B的头节点开始走,当它们走到当前链表的尾节点时,从另一链表的头节点开始走(p1走链表B,p2走链表A)。
这样其实当它们走到相交的节点时,正好走过的路径长度是一样的。
# 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
"""
if not headA or not headB:
return None
p1 = headA
p2 = headB
while p1 != p2:
p1 = p1.next if p1 else headB
p2 = p2.next if p2 else headA
return p1