看动画学算法之:环检测算法-弗洛伊德的兔子和乌龟

简介

环检测应该是一个非常常见的算法问题,怎么判断是否有环的问题呢?

一个很简单的做法就是用HashSet来保存要遍历的数据,如果出现了重复就知道这个链表是有环的。但是这个方法需要保存遍历过的所有的元素,所以其空间复杂度是o(n)。

有没有什么方法可以不用保存之前的元素也能够判断是否有环呢?

来看看弗洛伊德的兔子和乌龟算法吧。

弗洛伊德简介

有的同学会说了,弗洛伊德(Sigmund Freud)谁不知道,梦的解析的作者,大名鼎鼎的心理学专家,精神分析学派的创始人。

但是这里我们讲的弗洛伊德全名是Robert W.Floyd(罗伯特·弗洛伊德)而不是Sigmund Freud。

罗伯特·弗洛伊德是计算机科学家,图灵奖得主,前后断言法的创始人,堆排序算法和Floyd-Warshall算法的创始人之一。

它获得了1978年图灵奖,是一位“自学成才的计算机科学家”。

这个兔子和乌龟算法就是他发明的一种环检测算法。

构造一个环

猜你喜欢

转载自blog.csdn.net/superfjj/article/details/108746958