NowCoder 剑指Offer_编程题 链表中环的入口节点
来源:互联网 发布:淘宝宝贝尺寸 编辑:程序博客网 时间:2024/06/18 11:31
NowCoder 链表中环的入口节点
Description
一个链表中包含环,请找出该链表的环的入口结点。
解题思路
两个指针p,q从表头出发遍历链表,p每次走一步,q每次走两步。如果链表中有环,那么p,q最终会相遇。设p走了x步,q则走了2x,设环的长度为n,表头到环的入口节点距离为k。那么会有等式2x-x=n,即x=n,即p走过的路程为环的长度。设p此时走了环的距离为d(从入口节点开始算),那么就有k+d=x=n,所以p距离入口节点的距离为k,等于链表表头到环的入口节点的距离。那么此时q从表头出发,p从当前位置出发,两者每次走一步,相遇的节点就是入口节点。
代码
个人github代码链接
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead) { if(pHead == NULL || pHead->next == NULL) return NULL; ListNode *p, *q; p = q = pHead; while(p && q->next){ p = p->next; q = q->next->next; if(p == q) break; } q = pHead; while(p != q){ p = p->next; q = q->next; } return p; }};
0 0
- NowCoder 剑指Offer_编程题 链表中环的入口节点
- 剑指offer_链表中环的入口节点
- 剑指offer_链表---链表中环的入口结点
- 剑指offer_二叉树的下一个节点
- 剑指offer_删除链表中重复的节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 链表中环的入口节点
- 剑指Offer:链表中环的入口节点
- 剑指offer-链表中环的入口节点-php
- Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。
- C++ STL中Map的按Key排序和按Value排序
- row_number() over (partition by..order by...)分组排序
- 我一定不是最后一个知道:户外决策IOS版上线了!
- 单例模式的7种写法
- NowCoder 剑指Offer_编程题 链表中环的入口节点
- Qt获取本地ip地址
- Hive 安装 python thrift 连接hiserver2
- kubeadm 搭建 kubernetes 集群
- JQuery的父、子、兄弟节点查找方法
- $(document).ready()与window.onload的区别
- Mongodb数据库备份和还原
- freemarker include与import的区别, 宏marco的使用
- PyTorch