# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
node1, node2 = headA, headB
while node1 != node2:
node1 = node1.next if node1 else headB
node2 = node2.next if node2 else headA
return node1
'''
if not headA or not headB: return
#时间复杂度O(n),空间复杂度O(n)
tmp = set()
while headA:
tmp.add(headA)
headA = headA.next
while headB:
if headB in tmp: return headB
headB = headB.next
return
'''