问题:
Given a linked list, determine if it has a cycle in it.
问题来源:
思路:
使用两个指针遍历链表,一个指针每次后移一位,另一个指针每次后移两位。如果两个相遇,那么有环,否则无环。
代码:
-
public static boolean hasCycle(ListNode head) {
-
boolean flag = true;
-
ListNode node1 = head;
-
ListNode node2 = head;
-
while (true) {
-
if (node1 == null || node2 == null) {
-
flag = false;
-
break;
-
}
-
node1 = node1.next;
-
node2 = node2.next;
-
if (node2 == null) {
-
flag = false;
-
break;
-
}
-
node2 = node2.next;
-
if (node1 == node2 && node1 != null) {
-
flag = true;
-
break;
-
}
-
}
-
return flag;
-
}
阅读(1440) | 评论(0) | 转发(0) |