定义
快慢指针指两个同向移动的指针,分别以不同的步长移动。主要涉及在[[链表]]中的使用。
应用
1. 判断链表是否包含闭环
两个快慢指针,快指针一次比满指针多走一个节点。当快指针追上慢指针的时候,则证明链表是闭环的。反之快指针会指向null。
代码实现
fast = slow = head
fast = fast->next->next
slow = fast->next
while(true) {
if (fast == null || fast->next == null) {
return false
}
if (fast == slow || fast->next == slow) {
return true
}
fast = fast->next->next
slow = slow->next
}
2. 寻找链表的中间节点
快指针是慢指针速度的二倍,满指针移动一个节点,快指针移动两个节点。当快指针移动到终点的时候慢指针正好在链表的中间位置。
3. 删除倒数第几个节点
快指针设置成比慢指针快需要删除的节点数量,当快指针知道终点的时候,慢指针正好在想要的位置。
JosephPrelt
关注更新, 我体会到, 旅行让人焕然一新。谢谢 美好的心情。 <a href=https://iqvel.com/zh-Hans/a/%E4%B8%AD%E5%9B%BD/%E9%A6%99%E6%B8%AF%E6%98%9F%E5%85%89%E5%A4%A7%E9%81%93>香港星光大道</a> 我喜欢, 真实的旅行者分享建议。这个页面 就是 属于这里的。加油。