3 approaches || 0 ms fast || easy || short
\nApproach 1:\n\ncode:\n\nclass Solution {\npublic:\n    ListNode* middleNode(ListNode* head) {\n        \n        ListNode *slow = head, *fast = head;\n       
\n```Approach 1:```\n\ncode:\n```\nclass Solution {\npublic:\n    ListNode* middleNode(ListNode* head) {\n        \n        ListNode *slow = head, *fast = head;\n        while (fast && fast->next){\n            slow = slow->next, fast = fast->next->next;\n        }\n        return slow;\n        \n    }\n};\n```\n\n```Approach 2:```\n\ncode:\n```\nclass Solution {\npublic:\n    ListNode* middleNode(ListNode* head) {\n        \n        if(head == NULL || head->next == NULL){\n            return head;\n        }\n        ListNode *fast, *slow;\n        fast = head, slow = head;\n        while(fast->next != NULL && fast->next->next != NULL){\n            slow = slow->next;\n            fast = fast->next->next;\n        }\n        if(fast->next != NULL){\n            slow = slow->next;\n        }\n        return slow;\n        \n    }\n};\n```\n```Approach 3:```\n\ncode:\n```\nclass Solution {\npublic:\n    ListNode* middleNode(ListNode* head) {\n        int i =0;\n        ListNode* n = head;\n        while(head != NULL)\n        {\n            i++;\n            head = head->next;\n        }\n        i = i/2+1;\n        int k = 1;\n        while(k < i)\n        {\n            k++;\n            n = n->next;\n            \n        }\n        return n;\n        \n    }\n};\n```\n\nHope it will help you \uD83D\uDE4C .\nThank you!\n\n
['C']