1、基本原理
快慢指针方法,又称为龟兔赛跑算法,其基本思想就是使用两个移动速度不同的指针(快指针是慢指针的X倍,X > 1)在数组或链表等序列结构上移动,移动的速度一快一慢,以此来制造出自己想要的差值。这个差值可以让我们找到链表上相应的节点。
2、应用场景
(1)寻找中间值
思路分析:
一般的思路是:先遍历一次链表,记录住一共有多少个节点,然后,再次遍历找寻中点。
利用快慢指针的思路是:我们把一个链表看成一个跑道,假设 a 的速度是 b 的两倍,那么当 a 跑完全程后,b 刚好跑一半,以此来达到找到中间节点的目的。
第一步:slow 与 fast 指针都指向链表第一个节点,然后 slow 每次移动一个指针,fast 每次移动两个指针。
第二步:使用两个指针遍历链表,当快指针指向的结点没有下一个结点了,就可以结束了,结束之后,慢指针指向的结点就是中间值
代码实现:
第一步:先定义一