快慢指针简单用法

2024-07-22 技术笔记 1

定义

快慢指针指两个同向移动的指针,分别以不同的步长移动。主要涉及在[[链表]]中的使用。

应用

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. 删除倒数第几个节点

快指针设置成比慢指针快需要删除的节点数量,当快指针知道终点的时候,慢指针正好在想要的位置。

相关文章

如何避免愚蠢的见识

罗素关于如何避免有愚蠢的见识这种行为所需要的原则

Markdown 格式示例文章

Markdown 格式示例文章

[翻译]defer,panic和recover

这是Andrew Gerrand对go语言中defer,panic和recover的详细讲解,尝试翻译出来,加深自己的理解