摘要: 上次看到的题目仅是判断是否有环,如果要求出环的起点位置又该如何呢?这里看到关于快慢指针的证明,感觉有必要记下来下。假设链表头到环头距离k,环长度n,指针相遇位置距离环头为x,慢指针直到相遇时移动距离为m那么有m=k+x+pn,2m-m=qn;那么有qn=k+x+pn,即k+x=(q-p)n;可以发现从表头到相遇位置的距离是环长的整数倍。那么,将slow或者fast任意一个指针从相遇位置直接移动到表头。然后while(slow!=fast)slow++,fast++(这里fast也只一次一步)那么最后slow=fast时,一定是环头位置。node * f(node* head){ node* . 阅读全文
posted @ 2014-03-24 18:06 cavehubiao 阅读(240) 评论(0) 推荐(0)