双指针:快慢指针套路
一、面试常考点
1. 为什么快慢指针能检测环
快指针每次多走一步,若有环必相遇。
2. 常见应用
找中点、找环入口、删除倒数第 N 个。
二、细节介绍
1. 找中点
slow 一步、fast 两步,结束时 slow 在中点。
2. 倒数第 N 个
先让 fast 走 n 步,再同步走到尾。
三、示例代码
function middleNode(head) {
let slow = head
let fast = head
while (fast && fast.next) {
slow = slow.next
fast = fast.next.next
}
return slow
}
四、常用应用场景
1. 流式结构遍历
不用额外数组也能定位关键节点。
2. 周期检测
如循环链路、状态循环判断。