关于快慢指针在带环单链表中的使用

快慢指针,顾名思义就是定义的两个指针一个走的快,一个走的慢。
若给定一个单链表,判断其是否带环,就可以使用快慢指针来进行判断。
通常我们都是让fast(快指针)走两步,slow(慢指针)走一步,但是让fast走三步,走四步,而slow只走一步,也是可以的,只不过后者时间复杂度更大一些,而且由于带环链表的不同,fast和slow不一定会相遇。
关于快慢指针在带环单链表中的使用
关于快慢指针在带环单链表中的使用
关于快慢指针在带环单链表中的使用
根据上面的分析可知,一般情况下,当fast走的步数越多时,它们相遇所耗费的时间也就越长,fast在走的过程中跳过slow的次数也就越多,fast和slow也不一定能够相遇。
fast和slow要相遇,需要它们之间相差fast先走的步数,所以当fast走的步数越大,在一个带环的链表中,fast就需要不断循环的走,直到fast和slow之间相差fast所走的步数,它们再走时,才有可能会相遇。
因此我们通常使用fast走两步,slow走一步的快慢指针方法。这样可以让fast和slow在最短时间,以及走最短路径相遇。