描述
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。
数据范围: 1≤n≤10000,1<=结点值<=10000
要求:空间复杂度 O(1),时间复杂度 O(n)
l利用hash集合具有冲突性,输入相同数据,会产生冲突,对链表环进行判断。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
Set<ListNode> set=new HashSet<>();//构造hash集合
while(pHead!=null)
{
if(!set.add(pHead))//如若数据无法加入hash集合,则证明集合中已有该数据,尾环所在处。
return pHead;
pHead=pHead.next;
}
return null;
}
}