チェーンテーブルにループがあると判断



/*
* * 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) { map<ListNode *,bool>m; while(head){ if(m.count(head)) return true; else m.insert(pair<ListNode *,bool>(head,true)); head = head->next; } return false; } };
 , ,eg:99999
class Solution {

public:

    bool hasCycle(ListNode *head) {

        if(head == NULL) return false;

        ListNode *temp=head;

        ListNode *temp1;

        int val =temp->val;

        ListNode x(99999);

        ListNode *x_p = &x;

        while((temp->next!=x_p) && ((temp->next!=NULL)))

        {

            temp1 =  temp;

            temp =temp->next;

            temp1->next = x_p;

        }

        if(temp->next == x_p)

         return true;

        return false;

    }