老套路了,用hashmap做遍历的判定,对于这类问题真的好用,屡试不爽
思路:这里用hashmap存放对应节点和出现次数,一旦第一次出现次数为2,直接返回当前节点

/*
 public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val) {
        this.val = val;
    }
}
*/
import java.util.*;
public class Solution {
    //开一个map记载节点和出现次数
    HashMap res=new HashMap();
    public ListNode EntryNodeOfLoop(ListNode pHead) {
        if(pHead==null){
            return null;
        }
        else{
            //如果当前节点第一次出现,则加入map,次数更新为1
            if(res.get(pHead)==null){
                res.put(pHead,1);
                return EntryNodeOfLoop(pHead.next);
            }
            //如果当前节点不是第一次出现,直接返回当前节点
            else{
                res.put(pHead,res.get(pHead)+1);
                return pHead;
            }
        }
    }
}