题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
解题思路
先定义一个慢指针一个指针 一个走一步一个走2步
如果2个指针相遇了说明改链表有环 此时记录下该相遇结点
最后一步 让头节点指针和相遇结点指针一起走 相遇点就是入环点
至于最后一步不需要知道为什么 记住就行 有公式
下面是java代码实现
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
ListNode less = pHead;
ListNode more = pHead;
ListNode meetNode = null;
while(more != null && more.next != null) {
less = less.next;
more = more.next.next;
if(less == more) {
meetNode = less;
break;
}
}
while (pHead != null && meetNode != null) {
if (pHead == meetNode) {
return meetNode;
}
pHead = pHead.next;
meetNode = meetNode.next;
}
return null;
}
}