下面输入一个很诡异的链表,暂时称它为“变异链表”,如图4—3所示。从图中可以看出此链表的尾部形成了一个环,请实现一个时间和空间上尽可能高效率的算法来判断输入的链表是否为“变异链表”,要求: 说明你所设计算法的时间复杂度和空间复杂度。

admin2014-04-17  41

问题 下面输入一个很诡异的链表,暂时称它为“变异链表”,如图4—3所示。从图中可以看出此链表的尾部形成了一个环,请实现一个时间和空间上尽可能高效率的算法来判断输入的链表是否为“变异链表”,要求:

说明你所设计算法的时间复杂度和空间复杂度。

选项

答案空间复杂度分析:除去链表本身外,只有O(1)的空间消耗。 时间复杂度分析:如果链表无环,那么经过n/2步之后,fast会走到链表的末端,程序结束。如果链表有环,假设经过k步之后slow进入环中(k<n),此时slow和fast之间的距离为m(m<n)。由于fast每次比slow多走一步,那么经过m步之后,fast就会恰好追上slow。两步的时间复杂度均为O(n),所以总的时间复杂度也是O(n)。

解析
转载请注明原文地址:https://jikaoti.com/ti/c3ajFFFM
0

最新回复(0)