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;
    }
}
相关推荐
xcl09251 小时前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌1 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天2 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star2 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
LB21122 小时前
力扣160 21 86
算法·leetcode·职场和发展
今天AI了吗2 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午3 小时前
27-AuthService登录链路
java·低代码·架构
泡海椒3 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
黄敬峰3 小时前
一文搞懂 LLM 流式输出与 SSE
面试
小智老师PMP3 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理