【剑指**】23.链表中环的入口节点
2018-02-26 15:14
225 查看
23.链表中环的入口节点
题目描述
一个链表中包含环,请找出该链表的环的入口结点。 没有环则返回空。
分析
思路和《剑指offer》上的一样。分三个步骤。第一步,判断链表中是否存在环。
第二步,判断环的大小
第三步,得到环的入口节点
代码
/* 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* p1 = pHead; ListNode* p2 = pHead; p1 = p1->next; p2 = p2->next; p2 = p2->next; bool isLoop = false; while (p1 != NULL && p2 != NULL) { if (p1 == p2 && p2 != NULL) { isLoop = true; break; } p1 = p1->next; p2 = p2->next; if (p2 != NULL) { p2 = p2->next; } } if (!isLoop) return NULL; // 得到环的大小 int num_node = 1; p2 = p2->next; while (p1 != p2) { num_node++; p2 = p2->next; } // 得到环的入口节点 int idx = 1; p1 = pHead; p2 = pHead; while (idx <= num_node) { p1 = p1->next; idx++; } while (p1 != p2 && p1 != NULL) { p1 = p1->next; p2 = p2->next; } return p1; } };
相关文章推荐
- 剑指offer--面试题23:链表中环的入口节点
- 【剑指offer】面试题23:链表中环的入口节点
- 剑指Offer-23:链表中环的入口节点
- python剑指offer 链表中环的入口节点
- 剑指Offer—55—链表中环的入口节点
- 剑指Offer:链表中环的入口节点
- 剑指23:链表中环的入口结点——两个指针
- 剑指offer-链表中环的入口节点-java
- 剑指offer----链表中环的入口节点----java实现
- NowCoder 剑指Offer_编程题 链表中环的入口节点
- 剑指offer----链表中环的入口节点
- 剑指offer----链表中环的入口节点----java实现
- 【剑指offer】第二十二题(链表中倒数第 K 个节点) 和 第二十三提(链表中环的入口点)
- 剑指offer56题(链表中环的入口节点)
- 7.剑指offer-链表中环的入口节点
- 剑指offer(58):链表中环的入口节点
- 剑指Offer面试题56:链表中环的入口节点 Java实现
- 剑指 offer 56:求链表中环的入口节点
- 剑指offer-链表中环的入口节点-php
- 剑指Offer 面试题23:链表中环的入口节点 Java代码实现