2095. Delete the Middle Node of a Linked List
You are given the
headof a linked list. Delete the middle node, and return theheadof the modified linked list.The middle node of a linked list of size
nis the⌊n / 2⌋thnode from the start using 0-based indexing, where⌊x⌋denotes the largest integer less than or equal tox.
- For
n=1,2,3,4, and5, the middle nodes are0,1,1,2, and2, respectively.Example 1:
Input: head = [1,3,4,7,1,2,6]
Output: [1,3,4,1,2,6]
Explanation:
The above figure represents the given linked list. The indices of the nodes are written below.
Since n = 7, node 3 with value 7 is the middle node, which is marked in red.
We return the new list after removing this node.Example 2:
Input: head = [1,2,3,4]
Output: [1,2,4]
Explanation:
The above figure represents the given linked list.
For n = 4, node 2 with value 3 is the middle node, which is marked in red.Example 3:
Input: head = [2,1]
Output: [2]
Explanation:
The above figure represents the given linked list.
For n = 2, node 1 with value 1 is the middle node, which is marked in red.
Node 0 with value 2 is the only node remaining after removing node 1.
def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]:
if head.next == None:
head = None
return head
prev = head
i = head
j = head
while j:
try:
j = j.next.next
prev = i
i = i.next
except:
j = j.next
prev.next = i.next
return head


