思路
- 快慢指针法:快指针每时间走2个指针长度,慢指针走一个,第一次相遇,让一个指针回头链表头,两个指针速度均为1,从头再走
- Set集合,当有第一个重复时候,就是入口节点
代码
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead)
{if(pHead.next==null|| pHead.next==null||pHead.next.next==null){return null;}
ListNode p1=pHead.next;
ListNode p2=pHead.next.next;
//第一次相遇
while(p1!=p2){
p1=p1.next;
p2=p2.next.next;
}
p1=pHead;
while(p1!=p2){
p1=p1.next;
p2=p2.next;
}
return p1;
}
}
京公网安备 11010502036488号