leetcode 环形链表 II

找到环的起点需要做一些不同于快慢指针的处理,我们可以在快慢指针第一次相遇后,将其中一个指针再次指向头结点,并以相同的速度使两个指针再次向前推进,再次相遇时,就是对应的环起点。
public ListNode detectCycle(ListNode head) { ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null) { fast=fast.next.next; slow=slow.next; if(fast==slow) break; } if(fast==null||fast.next==null) return null; fast=head; while(fast!=slow) { fast=fast.next; slow=slow.next; } return slow; }


浙公网安备 33010602011771号