# 2095. Delete the Middle Node of a Linked List https://leetcode.com/problems/delete-the-middle-node-of-a-linked-list/ ## 思路: 1. 注意邊界問題 2. 可以follow up 使用fast slow pointer ```python= # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]: size=0 current= head while current: size+=1 current=current.next position=(size//2)-1 current_2=head count= 0 if size==1: return None while count!= position: current_2 =current_2.next count+=1 current_2.next=current_2.next.next return head ``` ## follow up 快慢指針法 思路: 1. 因為快指針會跑兩倍快比起慢指針,所以慢指針會還在正中央,當快指針已經到了最尾端的時候。 2. 所以我們需要再存一個節點pre,指向slow 慢指針的前一個,因為我們要去掉slow pointer 正指上的節點。 ```python= pre,slow,fast =None, head,head while fast and fast.next: pre=slow slow=slow.next fast=fast.next.next if pre ==None: return None pre.next =slow.next return head ```