【剑指offer-解题系列(56)】链表中环的入口
来源:互联网 发布:使用node创建webapi 编辑:程序博客网 时间:2024/05/07 12:33
题目描述
一个链表中包含环,请找出该链表的环的入口结点。
分析
使用两个指针,一个跳动1下,另一个跳动2下,最后两个指针会在某一处重合,此时再定义一个新指针从开头开始跳动,刚才的指针也同时开始跳动,两者最后会在入口节点相遇。
代码实现
ListNode* EntryNodeOfLoop2(ListNode* head){
ListNode* slow=head,*fast=head;
//得到相遇点
while(fast && fast->next)
{
slow=slow->next;
fast=fast->next->next;
if(slow==fast)
break;
}
if(fast==NULL||fast->next==NULL)
return NULL;
//slow指向开头,fast在相遇点
//得到入口点
slow=head;
while(slow!=fast){
slow=slow->next;
fast=fast->next;
}
return slow;
}
ListNode* EntryNodeOfLoop (ListNode* pHead)
{
if(!pHead)
return NULL;
if( pHead->next==NULL)
return NULL;
/////////////////////必须同时出发
ListNode*p=pHead,*p2=pHead ;
while(1){
p = p ->next; if( p ==NULL) return NULL;
p2= p2->next; if( p2==NULL) return NULL;
p2= p2->next; if( p2==NULL) return NULL;
if(p2==p )
break;
}
ListNode*s1=pHead ,*s2=p2;
while(s1!=s2){
s1 = s1 ->next;
s2 = s2 ->next;
}
return s2;
}
ListNode* slow=head,*fast=head;
//得到相遇点
while(fast && fast->next)
{
slow=slow->next;
fast=fast->next->next;
if(slow==fast)
break;
}
if(fast==NULL||fast->next==NULL)
return NULL;
//slow指向开头,fast在相遇点
//得到入口点
slow=head;
while(slow!=fast){
slow=slow->next;
fast=fast->next;
}
return slow;
}
ListNode* EntryNodeOfLoop (ListNode* pHead)
{
if(!pHead)
return NULL;
if( pHead->next==NULL)
return NULL;
/////////////////////必须同时出发
ListNode*p=pHead,*p2=pHead ;
while(1){
p = p ->next; if( p ==NULL) return NULL;
p2= p2->next; if( p2==NULL) return NULL;
p2= p2->next; if( p2==NULL) return NULL;
if(p2==p )
break;
}
ListNode*s1=pHead ,*s2=p2;
while(s1!=s2){
s1 = s1 ->next;
s2 = s2 ->next;
}
return s2;
}
阅读全文
0 0
- 【剑指offer-解题系列(56)】链表中环的入口
- 剑指offer系列之五十九:链表中环的入口节点
- 剑指offer系列之54:链表中环的入口节点
- 剑指offer 56-链表中环的入口点
- 剑指Offer 56 链表中环的入口结点
- 【剑指offer-解题系列(12)】数值的整数次方
- 【剑指offer-解题系列(17)】树的子结构
- 【剑指offer-解题系列(18)】树的镜像
- 【剑指offer-解题系列(27)】字符串的排列
- 【剑指offer-解题系列(30)】最小的K个数
- 【剑指offer-解题系列(39)】二叉树的深度
- 【剑指offer-解题系列(53)】表示数值的字符串
- 【剑指offer-解题系列(59)】对称的二叉树
- 【剑指Offer学习】【面试题56:链表中环的入口结点】
- 剑指offer-面试题56:链表中环的入口结点
- 《剑指Offer》面试题56:链表中环的入口节点
- 剑指offer--面试题56:链表中环的入口结点
- 剑指offer-面试题56-链表中环的入口结点
- PAT--1041. Be Unique
- jQuery基础(四)—动画篇
- 微信小程序例子——控制导航条加载动画
- 第三十三天:JS写的一个倒计时的计时器;
- ubuntu下向github提交代码
- 【剑指offer-解题系列(56)】链表中环的入口
- JSP学习(当年做的知识记录)
- 【Solution】Mac下安装Win7虚拟机启动时显示'内部错误'
- MVC与单元测试实践之健身网站(三)-角色与权限
- firewalld-cmd初体验
- #6 观察者
- c++头文件的一点常识
- c++小程序
- C++构造函数的简单说明