2095. 删除链表的中间节点
分析
- 特例处理:
- 如果链表为空,直接返回
nullptr
- 如果链表只有一个节点,删除后返回
nullptr
- 如果链表只有两个节点,删除第二个节点,直接将
head->next
设为nullptr
- 如果链表为空,直接返回
- 计算链表长度:
- 遍历链表,计算其长度
n
- 遍历链表,计算其长度
- 定位中间节点的前一个节点:
- 根据
n / 2
,找到中间节点的前一个节点 - 将该节点的
next
指针指向中间节点的下一个节点,从而跳过中间节点
- 根据
- 返回结果:
- 返回删除中间节点后的链表头节点
时间复杂度
- 计算链表长度:需要遍历链表一次,时间复杂度为
O(n)
- 定位中间节点的前一个节点:需要遍历链表一次,时间复杂度为
O(n)
总时间复杂度:O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|