请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

快慢指针寻找链表环就快指针速度的疑问

老师,在一个链表中,两个指针同时同地出发,慢指针每次移动一步,快指针每次移动2步,当快指针下次碰到慢指针的时候说明链表存在环,能理解。就是快指针每次移动2步,那快指针每次移动3步,或4,5步可以吗 能够发生快指针后面会碰上慢指针的情况吗:)

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2021-11-05 03:45:52

是的,快指针移动任意步都会碰到。


证明稍微有些复杂,需要一定的数论知识了,你要是有兴趣,在研究明白为什么快指针的速度是 2 的情况下,能相遇,在这个基础上,可以尝试证明把 2 修改成任意 k。


但是,快指针的移动次数是 2,首先模拟起来更简单,其次,他们相遇的时间会更短。

(最差的时间复杂度肯定是 O(n)的,n 是链表中的节点个数。但如果快指针速度很大,很有可能在环中兜非常多的圈。可以用极限思维去想,如果快指针的速度是 v = 10000000,此时,快指针的速度成为了算法性能的主导向,而非链表中的节点个数。在最差情况下,将按照这个速度,对环中的每一个点都遍历一遍,复杂度成为了 O(vn)。这不是严格证明,但可以直观看到可能的结果。)


继续加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 甲骨文_0001 #1
    谢谢老师:)
    回复 有任何疑惑可以回复我~ 2021-11-05 08:48:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信