54链表中环的入口结点

题目描述

一个链表中包含环,请找出该链表的环的入口结点。
思路:就是a= c,画个图找出规律就行,只有一个节点的时候,没有环,所以不存在第一个入口环节点,因此返回空。而不是返回第一个元素。就是按照思路写就行,没有其他的套路。
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead){
        if(pHead == nullptr){
            return nullptr;
        }
        if(pHead -> next == nullptr){
            return nullptr;
        }
        ListNode* fast,* slow,*head;
        head = pHead;
        fast = slow = head;
        while(head != nullptr && head -> next != nullptr){
            fast = fast -> next -> next;
            slow = slow -> next;
            if(fast -> val == slow -> val){
                break;
            }
        }
        fast = pHead;
        
        while(fast -> val != slow -> val){
            slow = slow -> next;
            fast = fast -> next;            
        }
        return fast;
    }
};
原文地址:https://www.cnblogs.com/dingxiaoqiang/p/8301052.html