题解 | #链表中环的入口结点#
链表中环的入口结点
http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
/*
struct ListNode {
int val;
struct ListNode next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode EntryNodeOfLoop(ListNode* pHead) {
//建立一个数组,遍历链表过程中,将每个结点的地址存入数组,并检查当前结点的指针域是否在数组已存在的元素中,
//若存在,说明指针域所指结点就是入口结点;若不存在,后移指针,重复上述过程
int counter = 0;
bool flag = false;
vector<ListNode > vec;
ListNode * cur = pHead;
while(cur != nullptr)
{
vec.push_back(cur);
for(vector<ListNode *>::iterator iter = vec.begin(); iter != vec.end(); iter++)
{
if(iter == cur->next) { flag = true; break;} //当前所指结点指针域地址在数组中
}
if(!flag) cur = cur->next; //如果不在数组中,后移
else return cur->next; //如果在数组中,返回地址域指针
}
return cur; //遍历完,说明是单链表,返回空
}
};