Linked List Cycle
判断一个链表是否有环,空间复杂度是O(1)
如果不考虑空间复杂度,可以使用一个map记录走过的节点,当遇到第一个在map中存在的节点时,就说明回到了出发点,即链表有环,同时也找到了环的入口。
不适用额外内存空间的技巧是使用快慢指针,即采用两个指针walker和runner,walker每次移动一步而runner每次移动两步。当walker和runner第一次相遇时,证明链表有环
以图片为例,假设环的长度为 R ,当慢指针
假设快慢指针一定可以相遇,那么有