链表
寻找是否存在环,快慢指针可以解决,注意判断跳出条件即可
var hasCycle = function(head) {
let slow = head, fast = head
// fast 比 slow 走的快
// 如果不存在环,那么肯定是fast先碰到null
while(fast){
slow = slow.next
// 这里如果不用 ?. 的写法,那么就会出错了
// 因为 fast.next 可能为 null
// null.next 肯定会出错
fast = fast.next?.next
if(slow === fast) return true
}
return false
};
如果不用?.的写法,那么就要在while中多判断一项fast.next
var hasCycle = function(head) {
let slow = head
let fast = head
while (fast !== null && fast.next !== null) {
slow = slow.next
fast = fast.next.next
if (slow === fast) return true
}
return false
};