题目:力扣
解法1:利用set结构存每个节点,若节点已存在则有环;
var hasCycle = function(head) {
const s = new Set()
while (head) {
if (s.has(head)) {
return true
}
s.add(head)
head = head.next
}
return false
};
解法2:慢指针走一步,快指针走两步,若有环则快慢指针一定会有相遇
var hasCycle = function(head) {
if (head === null) return false
let p1 = head, p2 = head.next
while (p1 && p1.next && p2 && p2.next) {
if (p1 === p2) {
return true
}
p1 = p1.next
p2 = p2.next.next
}
return false
};