C++ Simple and Short Solution, Explained
We have two pointers: fast and slow. They both start at head.\nNow, in each iteration, we move slow forward one node and we move fast forward two nodes.\nIn the
We have two pointers: `fast` and `slow`. They both start at `head`.\nNow, in each iteration, we move `slow` forward one node and we move `fast` forward two nodes.\nIn the end, when `fast` reaches the last node, `slow` will be exactly at the middle point.\n```\nclass Solution {\npublic:\n    ListNode* middleNode (ListNode* head) {\n        ListNode *slow = head, *fast = head;\n        \n        while (fast->next != NULL) {\n            slow = slow->next;\n            if (fast->next->next != NULL)\n                fast = fast->next->next;\n            else\n                return slow;\n        }\n        return slow;\n    }\n};\n```\n**Like it? please upvote!**
['C']