import cn.leekari.base.ListNode;

/**
 * @author leekari
 * @date 2020/10/15 09:45
 * @description
 */

/**
 * 判断是否循环链表
 */
public class ListNodeHasCycle {

    /**
     * 快慢指针相遇即为循环链表
     * @param head
     * @return
     */
    public static boolean hasCycle(ListNode head) {
        ListNode slow = head;
        ListNode fast = head;
        while(fast != null && fast.next != null ){
            slow = slow.next;
            fast = fast.next.next;
            if (slow == fast){
                return true;
            }
        }
        return false;
    }
    public static void main(String[] args) {
        ListNode listNode = new ListNode(1);
        listNode.next = new ListNode(2);
        listNode.next.next = new ListNode(3);
        listNode.next.next.next = listNode;
        System.err.println(hasCycle(listNode));
    }
}