题目
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路
链表中是否有环使用的是龟兔赛跑算法,或者是快慢指针
代码实现
public ListNode EntryNodeOfLoop(ListNode pHead) {
ListNode meetNode = getMeetNode(pHead);
if(meetNode==null){
return null;
}
ListNode node=pHead;
while (node!=meetNode){
node=node.next;
meetNode=meetNode.next;
}
return node;
}
public static ListNode getMeetNode(ListNode head){
ListNode slow=head;
ListNode fast=head;
while (fast!=null&&fast.next!=null){
slow=slow.next;
fast=fast.next.next;
if(fast==slow){
return slow;
}
}
return null;
}