把节点一个个放入set,如果放入失败说明之前已经放过了,放入失败的节点就是环的入口。

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

    ListNode(int val) {
        this.val = val;
    }
}
*/
import java.util.Set;
import java.util.HashSet;
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead) {
        return EntryNodeOfLoop(pHead,new HashSet());
    }
    public ListNode EntryNodeOfLoop(ListNode pHead,Set<ListNode> set) {
        if(null==pHead)
            return pHead;
        if(!set.add(pHead))
            return pHead;
        return EntryNodeOfLoop(pHead.next,set);
    }
}