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;
    }
}
相关推荐
❀͜͡傀儡师3 分钟前
Spring AI 集成 TypeSafe:用判断模型处理工单分流与链路决策
java·人工智能·spring
bro_Java6666 分钟前
《栈与队列:数据结构的“双生花”》
java·数据结构·编辑器
花开路口8 分钟前
线程安全完全指南:从 Java 到 Kotlin,一文吃透并发编程
java·kotlin
她说..14 分钟前
IntelliJ IDEA 快捷键速查表(Mac 版)
java·macos·intellij-idea
EatFan22 分钟前
JunoYi 框架实践:Spring Boot 项目为什么拆成 framework、module、server 三层?
java·spring boot·后端·framework·module·模块化·junoyi
Wang's Blog33 分钟前
Java 项目实战: 外卖平台优化-从库Slave配置与主从复制验证
java·开发语言
子一!!36 分钟前
集成Spring家族的Spring论坛实战==一阶段
java·后端·spring
何中应39 分钟前
Maven 执行控制台中文乱码问题
java·maven·intellij-idea
yi01142 分钟前
LeetCode 134 加油站:从 双循环暴力 演变到 贪心
linux·算法·leetcode
Zhou14113644 分钟前
SpringSecurity_01_入门与认证
java