2095. 删除链表的中间节点

题目链接 2095. 删除链表的中间节点
思路 快慢指针-找到中间节点-简单扩展
题解链接 官方题解
关键点 while fast and fast.next: ...
时间复杂度 \(O(n)\)
空间复杂度 \(O(1)\)

代码实现:

class Solution:
    def deleteMiddle(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if head.next is None:
            return None
        
        slow, fast, prev = head, head, None
        while fast and fast.next:
            fast = fast.next.next
            prev, slow = slow, slow.next
        
        prev.next = slow.next
        return head

posted @ 2024-09-11 22:09  WrRan  阅读(4)  评论(0编辑  收藏  举报