相交链表
法一:
把A链表的节点都存HashSet里,遍历B链表找相同的节点
法二:
把A、B指针都移到末尾,再同时往回走,每次往回走都比较 当前节点的下一节点(a.next == b.next ?)是否相同,当不相同时当前节点就是相交节点
法三(官方):
只有当链表 headA 和 headB 都不为空时,两个链表才可能相交。因此首先判断链表 headA 和 headB 是否为空,如果其中至少有一个链表为空,则两个链表一定不相交,返回 null。
遍历移动两链表的指针pA,pB
如果指针 pA 走到头了,则将指针 pA 移到链表 headB 的头节点;如果指针 pB 走到头了,则将指针 pB 移到链表 headA 的头节点。
继续遍历
直到两指针指向同一节点,这个点就是相交节点