/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead)
{
if(!pHead || !pHead->next) return NULL;
ListNode *p = pHead, *q = pHead->next;
while(q) {
p = p->next;
q = q->next;
if(q) q = q->next;
if(q && (q == p || q->next == p)) break;
}
if(!q) return NULL;
int cnt = 1;
for(p = q->next; p != q; p = p->next, cnt++);
p = pHead, q = pHead;
while(cnt--) q = q->next;
while(p != q) p = p->next, q = q->next;
return p;
}
};
【剑指offer】JZ55 链表中环的入口结点 C++
最新推荐文章于 2022-03-06 14:22:20 发布