判断一个链表是否有环,如果有,找出环的入口地点并返回,否则返回NULL。
定义两个指针fast和slow,其中fast是快指针,slow是慢指针,二者的初始值都指向链表头,slow每前进一步,fast每次前进两步,两个指针同时向前移动,快指针每移动一次都要和慢指针比较,直到当快指针等于慢指针为止,就证明这个链表是带环的单向链表,否则,证明这个链表是不带环的循环链表(fast先行到达尾部为NULL,则为无环链表)。
解释:如果有环,fast一定比slow先入环,当slow到达环入口处,此时fast一定在环内,在这里我们可以假设slow在前面,fast距离slow的距离为n..
原创
2021-06-29 20:39:57 ·
320 阅读 ·
0 评论