
解题思路:本题前面的思路和前一个相同,但是要找到对应的环开始的点,那就需要分析,结论就是:slow的指针继续走,同时一个从head出发的节点同时走,最后他们一定会在环开始点相遇。
/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {if(head==null) return null;ListNode dummy_head = new ListNode();dummy_head.next = head;ListNode fast = dummy_head.next.next;ListNode slow = dummy_head.next;while(fast!=slow){if(fast==null || fast.next==null || fast.next.next==null){return null;}fast = fast.next.next;slow = slow.next;}ListNode after = dummy_head;while(after!=slow){slow=slow.next;after=after.next;}return slow;}
}