基本思路还是使用Floyd判圈算法。指针hare每次向后移动2个节点,指针tortoise每次向后移动1个节点。如果hare最终指向尾节点则该链表无回路。否则,该链表有回路。(详见《LeetCode #141 Linked List Cycle》)
现在我们已经知道了链表有没有回路,但是如何在不使用额外空间并且不修改原链表的基础上获得回路的起始节点呢?这需要一些数学推导:
设链表起始节点为H,回路起始节点为S,两指针第一次相遇节点为M。
设回路的长度为c,S到M的距离为c1,M到S的距离为c2。...
分类:
编程语言 时间:
2015-06-17 09:37:04
阅读次数:
249
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=455Due to the slow 'mod' and 'div' operations with int64 type, all Delphi solutions for the probl...
分类:
编程语言 时间:
2015-02-11 21:48:03
阅读次数:
322
/**
?*?@brief?uva?11549
?*?@file?11549.cpp
?*?@author?mianma
?*?@created?2014/12/31?11:43
?*?@edited??2014/12/31?11:43
?*?@type?
?*?@note?floyd判圈算法
?*/
#include?<fstr...
分类:
其他好文 时间:
2014-12-31 14:42:15
阅读次数:
237
介意转吗博主~~http://blog.csdn.net/thestoryofsnow/article/details/6822576,我知道不介意啦~ 问题:如何检测一个链表是否有环,如果有,那么如何确定环的起点. 龟兔解法的基本思想可以用我们跑步的例子来解释,如果两个人同时出发,如果赛道...
分类:
其他好文 时间:
2014-08-25 01:06:33
阅读次数:
431