public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
// 遍历列表,在遍历的同时记录遍历过的节点,当遍历过的节点再次被遍历到时,说明有环
*/
import java.util.*;
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {
        // 定义一个集合保存遍历过的节点
        HashSet<ListNode> set = new HashSet<>();
        // 开始变量链表,结束条件为 遍历完或者出现环
        ListNode p = pHead,returnNode = null;
        
        while(p != null){
            if(set.contains(p)){
                returnNode = p;
                break;
            }else{
                set.add(p);
                p = p.next;
            }
        }
        return returnNode;
    }
}