/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode EntryNodeOfLoop(ListNode pHead) {
if (pHead==null || pHead.next==null) return null;
ListNode fast = pHead;
ListNode slow = pHead;
while (fast!=null && fast.next!=null) {
fast=fast.next.next;
slow=slow.next;
// 快慢相遇,说明成环
if (fast==slow) {
ListNode tmp = pHead;
while (tmp!=slow) {
tmp=tmp.next;
slow=slow.next;
}
return tmp;
}
}
return null;
}
}
解题思想:
* 方式一:借助set
* 方式二:快慢指针

京公网安备 11010502036488号