输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
方法一:双指针
思路:该算法非常巧妙,数学推导就不展开了。核心思想就是,链表的头尾相互连接,循环到相交位置即可。
# 双指针
# 该算法非常巧妙,数学推导就不展开了。
# 核心思想就是,链表的头尾相互连接,循环到相交位置即可。
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
A, B = headA, headB
while A != B:
A = A.next if A else headB
B = B.next if B else headA
return A