# 2095. Delete the Middle Node of a Linked List

• Time: $O(n)$
• Space: $O(1)$
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Solution { public: ListNode* deleteMiddle(ListNode* head) { ListNode dummy(0, head); ListNode* slow = &dummy; ListNode* fast = &dummy; while (fast->next && fast->next->next) { slow = slow->next; fast = fast->next->next; } // Delete the middle node slow->next = slow->next->next; return dummy.next; } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public ListNode deleteMiddle(ListNode head) { ListNode dummy = new ListNode(0, head); ListNode slow = dummy; ListNode fast = dummy; while (fast.next != null && fast.next.next != null) { slow = slow.next; fast = fast.next.next; } // Delete the middle node slow.next = slow.next.next; return dummy.next; } } 
  1 2 3 4 5 6 7 8 9 10 11 12 13 class Solution: def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]: dummy = ListNode(0, head) slow = dummy fast = dummy while fast.next and fast.next.next: slow = slow.next fast = fast.next.next # Delete the middle node slow.next = slow.next.next return dummy.next