Problem 141

Linked List Cycle

Posted by Ruizhi Ma on June 29, 2019

问题描述

见链接:https://leetcode.com/problems/linked-list-cycle/

解决思路

用两个快慢指针,快指针走到null就没有环,快指正走一次,慢指针走一次,相遇则有环。

问题解惑

好像在fast和slow走的地方有点模糊,因为slow和fast一起走,如果slow.next走过了fast.next城环的地方又当如何呢?(待解决)

代码

package leetcode;

public class LinkedListCycle {
    class ListNode {
       int val;
       ListNode next;
       ListNode(int x) {
           val = x;
           next = null;
       }
   }

    public boolean hasCycle(ListNode head) {
        if (head == null) return false;

        ListNode fast = head;
        ListNode slow = head;

        while(fast.next != null){
            fast = fast.next;

            if(fast.next == null) return false;

            fast = fast.next;
            slow = slow.next;

            if(fast == slow) return true;

        }
        return false;
    }
}