在链表中循环

时间:2015-12-30 02:26:51

标签: java linked-list

我的代码需要在链表中找到一个循环。如果有一个循环,则输出为1;结果是0否则。我已经完成了研究并了解了Floyd的循环算法,并且发现了其他一些包含算法代码的帖子。但是我在HackerRank上遇到了一些测试用例。请问smb请告诉我代码有什么问题?谢谢!

int HasCycle(Node head) {
    if(head == null){
        return 0;
    }
    Node slow = head;
    Node fast = head;

    while(true)
    {
        slow = slow.next;
        if(fast.next != null){
            fast = fast.next.next;
        }
        else{
            return 0;
        }
        if(slow == null || fast == null){
             return 0;
        }
        if(slow.data == fast.data){
            return 1;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您的问题是链接列表的.data字段包含全部10个例子。然后它根据你的算法总是一个循环。你需要,如果慢= =快速返回1,而不是如果slow.data == fast.data。