我正在查看programcreek.com中关于在链表中查找周期的以下代码,并想知道变量' head'通过将它作为参数传递给布尔方法来声明ListNode类型。 Java中是否存在数据类型ListNode。我似乎无法在文档中找到它。 其次,我们如何分析时间和空间的复杂性。
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
if(head == null)
return false;
if(head.next == null)
return false;
while(fast != null && fast.next != null){
slow = slow.next;
fast = fast.next.next;
if(slow == fast)
return true;
}
return false;
}
}
答案 0 :(得分:0)
在此函数中, boolean 是函数hasCycle()的返回类型。此函数的输入是Class ListNode的对象,如果存在,您需要找到它的循环。这个功能很好。我不认为Java有一个名为ListNode的类。您可以找到时间复杂度here
答案 1 :(得分:0)
ListNode类没有在java中定义,必须单独定义。这是一个如何定义它的例子
public class linkedlistcycle {
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public boolean hasCycle(ListNode head){
ListNode a = head ;
ListNode b = head ;
if ((head == null) || (head.next==null))
{ return false;}
while ((head != null) | (head.next != null))
{
a = a.next ;
b = b.next.next;
if(a == b)
return true;
}
return false ;
}
}