老套路了,用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; } } } }