剑指offer 链表中环的入口节点
1.题目 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 来源:剑指offer 链接: https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4?tpId=13&tqId=11208&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 2.我的题解 2.1 快慢追赶法 先看看在同一个环中快追慢需要的时间(快指针速度 2 ,慢指针速度 1 ,追上是指二者重合),分析一下站位: 假设二者位置重合,那么已经追上了; 假设快指针落后于慢指针一个位置,那么 1 单位时刻后快指针追上慢指针; 假设快指针落后于慢指针两个位置,那么 2 单位时刻后快指针追上慢指针; 假设快指针在慢指针前面一个位置,那么 len-1 时刻后快指针追上慢指针,其中 len 是环的长度; 一般地,如果快指针距离慢指针距离为 n (顺环方向计算距离),那么快指针追上慢指针需要 n 单位时间,因为快指针每单位时间可以追上慢指针 1 个单位距离; 显然快慢指针初始站位最大距离小于环的周长,最坏情况下为 len-1 ;该情况下快指针追上慢指针时慢指针移动了 len-1 单位距离,快指针移动了 2*len-2 单位距离;