import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { // 判断是否含有环的话,需要双指针遍历,有重合的话就是有环 // 这里是如果有环的话,要返回环的入口结点 // 更简单了,只需要一个指针,每次将一个结点放入hashmap,如果被放入的结点已经存在了,则表示存在环,且这个第一个被判存在的结点就是环的入口 public ListNode EntryNodeOfLoop(ListNode pHead) { ListNode index1 = pHead; Set<ListNode> set = new HashSet<>(); while(index1 != null){ if(set.contains(index1)){ return index1; }else{ set.add(index1); index1 = index1.next; } } return index1; } }