LeetCood141题
给你一个链表的头节点 head ,判断链表中是否有环
通俗易懂的算法
var hasCycle = function(head) {
let cache = new Set() //一个集合
while(head){
if(cache.has(head)){
return true //存在环,true退出while循环
}else{
cache.add(head)
}
head = head.next
}
return false //不存在环
}
双指针算法
如果是环形链表,那让2个指针去跑,由于是无限循环,运算又有快慢,那2个指针一定有相遇的时候。没有相遇则不是环形链表
var hasCycle = function(head) {
let slow = head //取名慢指针
let fast = head //取名快指针
while(fast && fast.next){
fast = fast.next.next
slow = slow.next
if(slow===fast) return true
}
return false
}
网友评论