设计测试用例——判断链表是否有环
关键词:链表,环
思路:
1) 首先定义链表,即确定可用的数据结构可为linkedList;
2) 链表成环,首先至少得存在链表,其次,环——即从一个节点出发,走一圈会回到初始节点。
因此,我们确认实现步骤:首先定义节点,然后由节点实现链表,再对链表是否有环作出判断。
核心算法:
详细分析,有以下几种情况:
1、空链表,无环
2、链表只有一个节点,无环
3、链表节点数>=2,可能存在环
核心是如何判断链表有环,这里采用【快慢指针】法:类比两个跑步速度不一样的人,一起出发,当快的人比慢个人多跑一圈时,两人再次相遇。
【慢指针法】
前提:链表存在至少2个节点
初始化:两个节点,节点1(定义为慢指针)引用链表头节点,节点2(定义为快指针)引用头节点的下一个节点(这样定义的好处是链表为空或只有一个节点,可直接返回无环判断)
跑圈:慢节点每次向前走1步,快节点每次向前走2步,若快节点或慢节点走到nu