/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool hasCycle(ListNode *head) {
if (head == NULL) return false;
if(head->next == head) return true;
map<ListNode*,ListNode*> mp;
while(head){
if(mp.count(head)) return true;
else mp[head] =head;
head = head->next;
}
return false;
}
};
/*
Node *p1,*p2;
if(head == NULL || head->next == NULL) //链表为空,或是单结点链表直接返回头结点
return 0;
p1 = p2 = head;
while(p1->next != NULL && p1->next->next != NULL)
{
p1 = p1->next->next;
p2 = p2->next;
if(p1 == p2)
return 1;
}
return 0;
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
/*
class Solution {
public:
ListNode * detectCycle(ListNode * head) {
if (NULL == head) return NULL;
ListNode * fast = head;
ListNode * slow = head;
while (1)
{
fast = fast->next ? fast->next : NULL;
if (NULL == fast) break;
fast = fast->next ? fast->next : NULL;
if (NULL == fast) break;
slow = slow->next;
if (slow == fast) break;
}
if (NULL == fast) return NULL;
ListNode * cur = head;
ListNode * inter = slow;
while (cur != inter)
{
cur = cur->next;
inter = inter->next;
}
return cur; //get the enter of the circle.
}
};
*/
141. Linked List Cycle
猜你喜欢
转载自blog.csdn.net/bjzhaoxiao/article/details/80265301
今日推荐
周排行