A.每日一题:2095. 删除链表的中间节点

题目链接:2095. 删除链表的中间节点(中等)

算法原理:

解法:复用876题代码

4ms击败95.21%

时间复杂度O(N)

前置题目:A.每日一题:876. 链表的中间结点+2130. 链表最大孪生和 中的876题

为了删除链表的中间节点,我们需要让慢指针少走一步,最终落到中间节点的前一个节点,然后越过后面一个节点,就能完成"删除"的效果~~

咋让慢指针少走一步??可以让快指针走两步,少循环一次,这样就等同于慢指针少走一步了

特别的,当只有一个节点的时候,快指针没办法走两步,需要特殊判断,返回 null

Java代码:

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    //2095. 删除链表的中间节点
    public ListNode deleteMiddle(ListNode head) {
        //只有一个节点
        if(head.next==null) return null;
        //876.链表的中间结点
        //本题先让快指针走两步,慢指针少走一步,这样最终刚好落在中间节点的前一个节点
        ListNode fast=head.next.next,slow=head;
        while(fast!=null&&fast.next!=null){
            slow=slow.next;
            fast=fast.next.next;
        }
        slow.next=slow.next.next;//删除slow的下一个
        return head;
    }
}
相关推荐
鶴哥只手遮天几秒前
Spring AI 2.0.1 深度解析-第 01 章 全景:模块拓扑、依赖层次与设计哲学
java·人工智能·开源
鶴哥只手遮天4 分钟前
Spring AI 2.0.1 深度解析-第 05 章 Advisor 架构:接口体系、栈式链与 context 传播
java·人工智能·开源
鶴哥只手遮天6 分钟前
Spring AI 2.0.1 深度解析-第 04 章 `ChatClient` 全流程:Builder、两条链路与结构化输出
java·人工智能·开源
鶴哥只手遮天6 分钟前
Spring AI 2.0.1 深度解析-第 08 章 RAG 组件逐个拆解:实现细节与八个可投产组件
java·人工智能·开源
SL_staff1 小时前
告别报表重复开发:JVS-BI 模板市场的参数化继承实践
java·数据分析·数据可视化
进击的明明1 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
SL_staff2 小时前
从邮箱传文档到协同流重构:企业文档协作的系统性破局实践
java·开源·github
smallyoung4 小时前
告别N+1:Spring Boot 一键数据翻译框架体系
java·后端·架构
Bazingga6 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端
SL_staff7 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网