给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
方法一:将list1遍历放入set中,然后开始遍历headB,当其中一个和headB相等时,表示为第一个相交节点,否则返回null。
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { Set<ListNode> listNodes1 = new HashSet<>(); while (headA != null) { listNodes1.add(headA); headA = headA.next; } while (headB != null) { if (listNodes1.contains(headB)) { return headB; } else { headB = headB.next; } } return null; }