输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:leedcode地址
a1->a2->a3
\
->a4(b3)->a5(b4)
/
b1->b2
第一次循环:b先结束,到了a4和b4,接下来一步到了a5和a1
第二次循环:(从b1、a2开始)这是同时到a4和b3,结束
a1->a2->a3->a4
\
->a5(b3)->a6(b4)
/
b1->b2
第一次循环:b先结束,到了a4和b4,接下来一步到了a5和a1
第二次循环:(从b1、a3开始)这是同时到a5和b3结束
# 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
"""
node, node1 = headA, headB
while node != node1:
node = node.next if node else headB
node1 = node1.next if node1 else headA
return node