LeetCode142
环形链表
题目描述为:
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
说明:不允许修改给定的链表。
思路
用C++中的stl 的set
主要的思路是第二次到达同样的位置就表示到达了起点。
主要的代码核心如下:
ListNode *detectCycle(ListNode *head)
std::set<ListNode *>node_set;//设置node_set
while(head)//遍历链表
{
if(node_set.find(head)!=node_set.end())//如果在node_set中已经出现
{
return head;
}
node_set.insert(head);//将节点插入node_set
head=head->next;
}
return NULL;//没有遇到环,则返回null
}
关于set的使用方法:
set使用方法:
begin() ,返回set容器的第一个迭代器
end() ,返回set容器的最后一个迭代器
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
此部分参考链接https://blog.csdn.net/changjiale110/article/details/79108447