美文网首页数据结构
Linked List Cycle(带环链表)

Linked List Cycle(带环链表)

作者: Frank_Kivi | 来源:发表于2017-09-21 23:38 被阅读1次

问题

Given a linked list, determine if it has a cycle in it.

Have you met this question in a real interview? Yes
Example
Given -21->10->4->5, tail connects to node index 1, return true

分析

请参阅 Intersection of Two Linked Lists(两个链表的交叉)

代码

/**
 * 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: True if it has a cycle, or false
     */
    public boolean hasCycle(ListNode head) {
        // write your code here
        if (head == null) {
            return false;
        }
        ListNode fast = head.next;
        ListNode slow = head;
        while (true) {
            if (slow == null || fast == null) {
                return false;
            }
            if (slow == fast) {
                return true;
            }
            if (fast.next == null) {
                return false;
            }
            fast = fast.next.next;
            slow = slow.next;
        }
    }
}

相关文章

网友评论

    本文标题:Linked List Cycle(带环链表)

    本文链接:https://www.haomeiwen.com/subject/gmhxextx.html