题目
思路
- 快慢双指针先判断是否有环
- 如果有环,快指针从head和慢指针同时开始移动,相遇即为环的入口点
代码
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
ListNode l = pHead;
ListNode r = pHead;
boolean hasCycle = false;
while (r != null && r.next != null) {
l = l.next;
r = r.next.next;
if ((hasCycle = l == r)) break;
}
if(!hasCycle) return null;
r = pHead;
while (l != r) {
l = l.next;
r = r.next;
}
return l;
}
}