JAVA超级简单的解法
每遍历一个指针就把该指针指向自己,最后遍历到当检测到下一个指针为自己时判断为有环,输出为该指针,否则判断为无环
要特别注意边界条件
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
if(pHead==null||pHead.next==null){
return null;
}
if(pHead.next==pHead){
return pHead;
}
ListNode p=pHead;
ListNode q=pHead;
while(p!=null&&p.next!=p&&q.next!=q){
p=p.next;
q.next=q;
q=p;
}
if(p==null){
return null;
}
else{
return p;
}
}
}
京公网安备 11010502036488号