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;
    }
}
相关推荐
摇滚侠1 小时前
MyBatis+Spring+SpringMVC SSM 整合 179-185
java·spring·mybatis
周末也要写八哥1 小时前
面经经验分享|熟练掌握面试考点
经验分享·面试·职场和发展
我不是FD1 小时前
OpenAI vs Anthropic API 对比:流式返回 + Adapt 适配层完整方案
java·人工智能·python
Peter(阿斯拉)2 小时前
[Android]_[中级]_[如何创建MVVM架构原型]
android·java·架构·mvvm·viewmodel
不知名的老吴2 小时前
面经经验分享|算法和数据结构考察
数据结构·经验分享·算法
地瓜伯伯2 小时前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud
Devin~Y2 小时前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
CoderYanger2 小时前
A.每日一题:3612. 用特殊操作处理字符串 I
java·程序人生·leetcode·面试·职场和发展·学习方法·改行学it
承渊政道2 小时前
【MySQL数据库学习】(MySQL表的内外连接)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统