今天鄙人为大家带来的是一道简单的逻辑运算题。用用到了一个我们在链表中提及过的方法快慢法。这道题其实没啥考的实际意义。只是我们如果能了解这道题的解决方法的话。对我们后面梳理逻辑会有很大的帮助。
单链表的题目
我们可以看到上面的题目。就是让我们判断是否带环。也许大家这样看起来可能不是很直观,那么我们重新画一个图,大家看着可能会更好一点。
大家可以看到这个图里面给我表示的是这个链表没有进环的地步。然后有一个竖直的黑点,就是他们环相交的地方。那么我们只需要判断是否存在这么一个点,那么就是不是能够判断是否带环了。 那么我们如何来判断他们是否有这么个点呢?然后这就是我们开始在序言中说的快慢指针的方法了。那什么叫快慢指针呢?快慢指针就是一个快,一个慢慢。例如一个指针每次走一步,一个指针每次走两步。我们以这个图为例。当慢支撑走了我的一半的话,那么快指针就已经走到他们的相交点了(就是那个黑色柱子)。当慢指针走到那个焦交点的时候,快指针已经在c里面走了一段时间了。然后当慢指针继续往前走,快指针也快速走。那么这就变成了我们的追赶问题了。如果带环的话,那么快指针一定会追慢指针的,因为我比你快一步,那么相当于我每次去和你的距离都会减一。无论我们会计人是走两步还是走三步走四步都会追上。如果是走技术的话,那么就是相当于转第二圈才能追上。并且这个不存在追