问题描述:
判断一个链表中,是否存在循环
思路解析:
这个问题简单,但因为链表还不熟悉,特写一个帖子。
自己用的思路就是,顺着链表往下撸,把遍历过的地址存入到set容器中。每次遍历时,检查当前地址是否存在于set里;如果存在则表示经历过,有循环。
代码实现:
class Solution {
public:
bool hasCycle(ListNode *head) {
set<ListNode*> PATH;
ListNode *cur = head;
while (cur != NULL) {
if (PATH.count(cur)) {
return true;
}
else
PATH.insert(cur);
cur = cur->next;
}
return false;
}
};
学习内容:
1. 关联容器set。set类似于map都是关联容器,只不过set只存入关键字,可以用于查找问题。
2. set插入函数inset(),计数函数count()
3. 链表的地址使用问题