如何判断一个链表里面有没有环?
第一种思路就是给遍历过的每个节点加一个标记,这样一直向下访问,如果遇到了某个节点有自己的标记,那么就说明这个节点访问过了。
第二种思路就是传说中的快慢指针,如果有环那么快慢指针必相遇,这其实就有点类似高中时候学过了追及相遇问题。
快慢指针我在大一的时候听学长说过,现在大二都结束了,终于自己体会了一把,哈哈哈哈。
下面是快慢指针的JS代码,对应leetcode的141题!

//快慢指针
var hasCycle = function(head) {
while(head==null||head.next==null) return false;
let quickPoint = head;
let slowPoint = head;
quickPoint = quickPoint.next.next
slowPoint = slowPoint.next
// if(quickPoint == null) return false;
while(quickPoint!=null){
if(quickPoint == slowPoint){
return true;
}
if(quickPoint.next!=null){
quickPoint = quickPoint.next.next
slowPoint = slowPoint.next
}else{
return false;
}
}
return false;
};
展开
2