一、快慢指针的概念
快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2次,慢指针每次向前移动1次。
如果我们要在上图链表中 删除value为10的节点,只需要设置两个指针,每一次移动后,快指针都会比慢指针多走一个节点,这就能形成一个指针间的差值,通过这个差值,来断开或者链接指针域,从而达到需要的结果。
二、快慢指针的应用
2.1 找中间值
思路:
设一个快指针 fast,设一个慢指针slow,假定快指针每次移动速度是慢指针的两倍,当快指针到达尾部节点指向None时,慢指针则处于链表的中间节点,从而确定中间节点的值。
图示:
slow与fast指针都指向链表第一个节点,然后slow每次移动一个指针,fast每次移动两个指针。
代码示例:
class ListNode:
def __init__(self, x, next=None):
self.val