链表中环的长度(算法)

原创 2015年07月06日 17:13:58

给出一个单向链表,如果有环,则返回环的长度,否则返回0;

 观察: 首先,我们需要判断链表是否有环。使用俩指针,一快一慢,如果快指针已经到达了尾部,而且他们没有相遇,那么可以判断链表无环。如果他们相遇,那么可以确定这个结点在环上,那么再从这个结点上出发向后遍历,一定可以回到这个结点上的,因此,环的长度也知道了。


int get CircleLength(ListNode head)
{
	ListNode slow = head;
	if(slow == null || slow.next == null) return 0;
	ListNode fast = slow.next.next;
	while(fast != null && fast.next != null)
	{
		if(slow == fast ) 	return GetLength(slow);
		slow = slow.next;
		fast = fast.next.next;
	}
	return 0;
}

int GetLength(ListNode node)
{
	int length = 1;
	ListNode curr = node;
	while(curr.next != node)
	{
		length ++;
		curr = curr.next;
	}
	return length;
}


判断单链表中环的长度等问题

给定一个单链表,只给出头指针h: 1、判断是否存在环 选定两个指针p1,p2,初始时p1=p2=h,循环执行以下操作p1=p1+1,p2=p2+2,判断p1==p2,若p1==p2,记交点为p,则存在...
  • cjc211322
  • cjc211322
  • 2014年03月31日 21:08
  • 790

剑指offer--链表中环的入口结点

题目描述 一个链表中包含环,请找出该链表的环的入口结点。 分析: 如果存在环,找到环的起始结点 当fast指针等于slow指针时,slow指针肯定还没有遍历完整个链表,而此时fast指针已...
  • kangaroo835127729
  • kangaroo835127729
  • 2015年04月17日 17:48
  • 1763

剑指Offer--056-链表中环的入口结点

链接 牛客OJ:链表中环的入口结点 九度OJ:未收录 GitHub代码: 056-链表中环的入口结点 CSDN题解:剑指Offer–056-链表中环的入口结点 牛客...
  • gatieme
  • gatieme
  • 2016年06月07日 13:25
  • 1595

剑指offer----链表中环的入口节点----java实现

一个链表中包含环,请找出该链表的环的入口结点。 此问题包含两个步骤: (1)判断链表中是否有环 (2)找出环 一、 1)选择快慢指针,让快指针每次走两步,慢指针每次走一步,若是单链表中有环的话,那么两...
  • snow_7
  • snow_7
  • 2016年08月11日 11:54
  • 970

《剑指offer》链表中环的入口结点

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/p...
  • libin1105
  • libin1105
  • 2015年09月13日 17:54
  • 918

剑指Offer面试题56:链表中环的入口节点 Java实现

题目:链表中环的入口节点         一个链表中包含环,如何找出环的入口节点?例如,下图中的入口节点是3.              1->2->3->4->5->6    ...
  • gg543012991
  • gg543012991
  • 2016年10月13日 23:33
  • 316

《剑指offer》——链表中环的入口结点

T: 题目描述 一个链表中包含环,请找出该链表的环的入口结点。 基本做法不考虑其中潜在的规律,就按照一般的方法,创建一个list,把扫描过的节点都存储在list中,知道下一个节点在lis...
  • shansusu
  • shansusu
  • 2015年12月13日 20:02
  • 1096

找出有环链表中环的起始节点

给定一个有环的链表,写一个算法,找出环的起点。 例如: 输入:A->B->C->D->E->C[与前面的C是同一个节点] 输出:C 判断一个链表是否存在环有一个简单的方法,就是使用一个...
  • newfelen
  • newfelen
  • 2014年04月17日 14:27
  • 1036

求长度(单链表)

#include typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; int ListLeng...
  • phytn
  • phytn
  • 2014年07月27日 09:45
  • 1146

找链表中环的入口节点

题目:寻找一个存在环的链表中,环的入口节点。 solution1:第一步,先通过构建快慢指针,判断链表中存在环;第二步,计算环中节点的个数;第三步,找到环的入口节点。 solution2:构建快慢指针...
  • CYH_job
  • CYH_job
  • 2017年03月30日 17:52
  • 165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表中环的长度(算法)
举报原因:
原因补充:

(最多只允许输入30个字)