141.环形链表
题目描述
解题思路
判断是否存在环,方法很多,这里使用的是快慢指针的方法。
快指针比慢指针移动多一个节点
1、没有环的情况,可以确定快指针一定比慢指针最先走完
2.如果有环的话,则会存在两个指针相遇的时候,只要出现这种情况,可认为是存在环的
代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var hasCycle = (head) => {
let fastP = head;
let slowP = head;
while (fastP) {
if (fastP.next == null) return false;
slowP = slowP.next;
fastP = fastP.next.next;
if (slowP == fastP) return true; // 快慢指针相遇,有环
}
return false; // fastP指向null了,也始终不相遇
}