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了,也始终不相遇
}
运行

本文介绍了一种高效的环形链表检测方法——快慢指针法。通过一个快指针和一个慢指针,快指针每次移动两步,慢指针每次移动一步,如果链表中存在环,两个指针最终会在环内相遇;若不存在环,快指针将首先到达链表尾部。
655

被折叠的 条评论
为什么被折叠?



