题目
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路
- 创建一个set集合。用于存储每一个结点的地址
- 遍历set集合,检查集合中是否有当前结点的下一个指针在不在set集合中
- 如果在,返回当前结点的下一个指针
- 如果不在,则添加到set集合中
- 循环结束,仍没有遇到返回值,则返回null
AC代码
import java.util.Set;
import java.util.HashSet;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
Set<ListNode> set = new HashSet<ListNode>();
ListNode t = pHead;
while(t != null) {
set.add(t);
if(set.contains(t.next)) {
return t.next;
}
t = t.next;
}
return null;
}
}