题目描述:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
此题目要求为判断一个链表是否有环,这应该说是一个经典的面试题目。只需要两个指针,一个走的快,一个走的慢,看慢的能不能追上快的,如果追上了那么就是有环的,否则走到链表的结尾那么就是没有环。
class Solution {
public:
bool hasCycle(ListNode *head) {
if(!head) return false;
ListNode *p = head;
ListNode *q = head->next;
while(p!=q&&p!=NULL&&q!=NULL){
p = p->next;
q = q->next;
if(q!=NULL) q = q->next;
else return false;
}
if(p==q) return true;
return false;
}
};