2012年9月20日

摘要: 问题描述:给你一个链表的表头指针head,如何判断链表中是否有环?扩展问题:如果有环,请找出环的入口点。问题解答:对于第一个问题,有一个很普遍的作法,就是使用快慢指针,一个指针一次走一步,另一个指针一次走两步,看是否相遇,便可以很容易得到结果。细节不再赘述。需要仔细分析的是第二个问题,如下图所示假设我们的链表形状是途中所示,那么可以看出块慢指针在节点3处相遇,我们假设1到2之间的距离是x, 2到3之间的距离是y, 3到2之间的距离是z,那么我们根据快指针每次走两步的特性可以得出下列公式:2*(x + y) = x + y + k*(y + z) 其中k为1 , 2……由上面公式我们又可以推到出 阅读全文
posted @ 2012-09-20 16:36 aho 阅读(482) 评论(2) 推荐(0) 编辑

导航