/**
 * 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) 
    {
        ListNode* node_1 = head;
        ListNode* node_2 = head;
        while(node_1 && node_1->next && node_2 && node_2->next)
        {
            node_1 = node_1->next;
            node_2 = node_2->next->next;
            if(node_1 == node_2)
            {
                return true;
            }
        }
        return false;
    }
};