题解 | #两个链表的第一个公共结点02#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { //创建集合set Set set = new HashSet<>(); //先把链表1的结点全部存放到集合set中 while (pHead1 != null) { set.add(pHead1); pHead1 = pHead1.next; } //然后访问链表2的结点,判断集合中是否包含链表2的结点,如果包含就直接返回 while (pHead2 != null) { if (set.contains(pHead2)) return pHead2; pHead2 = pHead2.next; } //如果集合set不包含链表2的任何一个结点,说明没有交点,直接返回null return null; } }
先把第一个链表的节点全部存放到集合set中,然后遍历第二个链表的每一个节点,判断在集合set中是否存在,如果存在就直接返回这个存在的结点。如果遍历完了,在集合set中还没找到,说明他们没有相交,直接返回null即可