题目 中等难度
给你一个链表的头节点
head
。删除 链表的 中间节点 ,并返回修改后的链表的头节点head
。长度为
n
链表的中间节点是从头数起第⌊n / 2⌋
个节点(下标从 0 开始),其中⌊x⌋
表示小于或等于x
的最大整数。
快指针一次走两步,慢指针一次走一步。快指针到空则慢指针到中间结点的前一个。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteMiddle(ListNode* head) {
if(head==nullptr||head->next==nullptr)return nullptr;
ListNode*f = head->next;
ListNode*s = head;
while(f&&f->next)
{
f = f->next->next;
if(f==nullptr)break;
s = s->next;
}
s->next = s->next->next;
return head;
}
};
官方代码
class Solution {
public:
ListNode* deleteMiddle(ListNode* head) {
if (head->next == nullptr) {
return nullptr;
}
ListNode* slow = head;
ListNode* fast = head;
ListNode* pre = nullptr;
while (fast && fast->next) {
fast = fast->next->next;
pre = slow;
slow = slow->next;
}
pre->next = pre->next->next;
return head;
}
};
作者:力扣官方题解
链接:https://leetcode.cn/problems/delete-the-middle-node-of-a-linked-list/solutions/1140770/shan-chu-lian-biao-de-zhong-jian-jie-dia-yvv7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。