Java O(n) time & O(1) space solution without using fast/slow pointer
The following solution is still O(n) time and O(1) space complexity, even though it is less efficient than the fast/slow pointer approach. It simply involves it
The following solution is still O(n) time and O(1) space complexity, even though it is less efficient than the fast/slow pointer approach. It simply involves iterating over the linked list 1.5 times, whereas the array solution is 1 pass, and the fast/slow solution is 1/2 of a pass; but still with O(1) space. \n\nI wanted to share this because this was my instinct for creating an initial brute force solution, rather than creating a new array. \n\n\n\n```java\nclass Solution {\n    public ListNode middleNode(ListNode head) {\n        if(head == null) return head;\n\n        int len = 0;\n        ListNode current = head;\n        while(current != null) {\n            len++;\n            current = current.next;\n        }\n        \n        len /= 2;\n        current = head;\n        while(len > 0) {\n            current = current.next;\n            len--;\n        }\n        \n        return current;\n    }\n}\n```
[]