题解 | #两个链表的第一个公共结点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即可
