思路
- 快慢指针法:快指针每时间走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; } }