Given a linked list, determine if it has a cycle in it.
给出一个链表,判断其是否为环形链表。
public class hasCycle {
public boolean hasCycle(ListNode head) {
ListNode pre = head;
ListNode p = head;
while (p != null && p.next != null) {
if (p.next == head) {
return true;
}
p = p.next;
pre.next = head;
pre = p;
}
return false;
}
}
思路:
实例化两个 ListNode 对象,将其指向 head 节点。
使用 p 遍历链表,使用 pre 将被 p 遍历的节点的 next 指向 head 节点。
每当 p 到达一个节点,判断 p.next 是否为 head。如果是,则返回 true。