Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
题意:给定一个链表,判断是否有环
由于这题出现的频率太高,我也不小心很早就看过它的做法,SO,直接贴代码吧!
PS:对于链表关键要考虑它的健壮性,异常情况有:空链表、单节点、空指针的情况
struct ListNode{
int val;
ListNode *next;
};
bool hasCycle(ListNode *head) {
bool flag = false;
if(head != NULL){
ListNode *p1 = head;
ListNode *p2 = head;
int i = 0;
while(p1->next){
i++;
p1 = p1->next;
if( i%2 == 0) p2 = p2->next;
if(p1 == p2){
flag = true;
break;
}
}
}
return flag;
}