zoukankan      html  css  js  c++  java
  • leetcode 142. Linked List Cycle II ----- java

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

    Note: Do not modify the linked list.

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

    141题的延伸,求出循环点。

    可以用数学方法证明出slow与find相遇的位置一定是所求的点。

    /**
     * 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 || head.next == null )
                return null;
            ListNode fast = head;
            ListNode slow = head;
    
            while( fast != null && fast.next != null  ){
                slow = slow.next;
                fast = fast.next.next;
                if( fast == slow ){
                    ListNode find = head;
                    while( find != slow ){
                        find = find.next;
                        slow = slow.next;
                    }
                    return find;
                }
            }
    
            return null;
    
            
        }
    }
  • 相关阅读:
    将图片转换为base64 格式
    BFC
    面试
    不足之处
    html 调用摄像头 并抓拍
    css,js零散知识的整理
    语义化标签SEO
    Modernizr
    快速排序(2)
    快速排序(1)
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/6066693.html
Copyright © 2011-2022 走看看