链表中环的入口结点 — C++实现
发布日期:2021-10-02 06:27:40 浏览次数:5 分类:技术文章

本文共 533 字,大约阅读时间需要 1 分钟。

题目描述

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

解题思路

使用快慢两个指针实现,若存在环,则两指针会在环内相遇,然后让快指针指向头结点,速度和慢指针一样,再继续走,下次相遇的的结点即为所求。

代码实现

class Solution {
public: ListNode* EntryNodeOfLoop(ListNode* pHead) {
if(!pHead)return NULL; ListNode *p,*q; q=pHead,p=pHead->next; if(!p)return NULL; while(p&&q&&p!=q){
p=p->next,q=q->next; if(p)p=p->next;else return NULL; } p=pHead,q=q->next; while(p!=q)p=p->next,q=q->next; return p; }};
运行时间:2ms占用内存:400k

转载地址:https://blog.csdn.net/Jeaten/article/details/108316214 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:反转链表的几种解法 — C++实现
下一篇:链表中倒数第k个结点 — C++实现

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月07日 08时30分07秒