Linked List Cycle II

来源:互联网 发布:主流的校园网网络拓扑 编辑:程序博客网 时间:2024/05/26 19:16

Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

Follow up:
Can you solve it without using extra space?

前一题是找相遇点  这一题找入口点


/** * 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) {                 ListNode fast = head;        ListNode slow = head;        while (fast != null && fast.next != null) {    fast=fast.next.next;    slow=slow.next;       if (fast == slow) {        ListNode start=head;        while (slow != start) {        start=start.next;        slow=slow.next;        }    if (slow == start)         return start;                   }    }return null;    }}


0 0
原创粉丝点击