一个链表中包含环,请找出该链表的环的入口结点
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{
int n=findlength(pHead);
if(n==-1)
return null;
ListNode p=pHead;
ListNode q=pHead;
while(n>0)
{
q=q.next;
n--;
}
while(p!=q)
{
p=p.next;
q=q.next;
// q=q.next;
}
return p;
}
//找出链表中环的长度
public int findlength(ListNode pHead)
{
ListNode p=pHead;
ListNode q=null;
int count=1;
if(p!=null&&p.next!=null)
{
q=p.next;
}
else
{
return -1;
}
while(p!=null&&q!=null)
{
if(p==q)
{
break;
}
p=p.next;
q=q.next;
if(q!=null)
q=q.next;
}
if(p==null||q==null)
{
return -1;
}
p=p.next;
while(p!=q)
{
p=p.next;
count++;
}
return count;
}
}