【发布时间】:2015-06-18 06:19:39
【问题描述】:
我正在查看 programcreek.com 中关于在链表中查找循环的以下代码,并想知道如何通过将 ListNode 类型的变量“head”作为参数传递给布尔方法在此处声明。 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;
}
}
【问题讨论】:
-
stackoverflow.com/a/2663147/1897935 两个人以不同的速度绕着一圈跑。两者都必须在某个时间点见面。 (如果它有 2 个方向,那么你可以从两个方向走并找到循环但你只有一个方向)
标签: java algorithm linked-list