[刷题]Linked List Cycle II

来源:互联网 发布:查理一世 知乎 编辑:程序博客网 时间:2024/06/06 10:37

[LintCode]Linked List Cycle II

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param head: The first node of linked list.     * @return: The node where the cycle begins.      *           if there is no cycle, return null     */    public ListNode detectCycle(ListNode head) {          // 2015-5-31 实在想不到        if (head == null || head.next==null) {            return null;        }        ListNode fast, slow;        fast = head.next;        slow = head;        while (fast != slow) {            if(fast==null || fast.next==null)                return null;            fast = fast.next.next;            slow = slow.next;        }                 while (head != slow.next) {            head = head.next;            slow = slow.next;        }        return head;    }}


0 0