题目描述
一个链表中包含环,请找出该链表的环的入口结点。
思路:就是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; } };