2021/04/25
双指针
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode p = head;
ListNode q = head;
while (p != null && q != null) {
p = p.next;
q = q.next;
if (q == null) return false;
q = q.next;
if (p == q) {
return true;
}
}
return false;
}
}
瞎搞
找一个很可能不会出现的数字,把链表的数据破坏掉。
在动态类型语言比如 js 里面,可以给每个路过的节点打个 tag。
public class Solution {
public boolean hasCycle(ListNode head) {
while (head != null) {
if (head.val == 19827453) return true;
head.val = 19827453;
head = head.next;
}
return false;
}
}