【算法 -- LeetCode】(019)删除链表的倒数第 N 个结点

news2025/1/17 0:59:39

在这里插入图片描述

1、题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list

2、图解

  • 首先这里仍然使用虚拟头结点,这样方便处理删除实际头结点的逻辑,不用考虑边缘结点的特殊情况;定义fast指针和slow指针,初始值为虚拟头结点,如图:
    在这里插入图片描述

  • fast 首先走 n+1 步 ,为什么是n+1呢? 因为只有这样同时移动的时候 slow 才能指向删除节点的上一个节点(方便做删除操作),如图:
    在这里插入图片描述

  • fast 和 slow 同时移动,直到fast指向末尾,如图:
    在这里插入图片描述

  • 删除 slow 指向的下一个节点,如图:
    在这里插入图片描述

3、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 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode fake = new ListNode(-1);
        fake.next = head;

        ListNode fast = fake;
        ListNode slow = fake;

        // 先让fast走n步
        for (int i = 0; i < n; i++) {
            fast = fast.next;
        }

        while (Objects.nonNull(fast.next)) {
            fast = fast.next;
            slow = slow.next;
        }

        slow.next = slow.next.next;

        return fake.next;
    }
}

执行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel常用操作备忘

excel操作&#xff1a; 1、快速填充多列公式&#xff1a;选中多列后&#xff0c;按ctrlD填 充。 2、快速删除空行&#xff1a;全选行&#xff0c;按ctrlG&#xff0c;空值项前边打上钩&#xff0c;点确定&#xff0c;针对选中的空行&#xff0c;鼠标右击&#xff0c;点删除&…

20230710~20230714周报

本次周报主要用于巩固和总结在DL-FWI培训中学到的知识。 基础知识 全波形反演&#xff08;FWI&#xff1a;Full waveform inversion&#xff09;&#xff1a;通过检测到的地震数据直接推测地下结构。 速度模型&#xff1a;由于波在不同介质中的传播速度不同&#xff0c;所以可…

计算联合体大小的测试demo

两个规则&#xff1a; 1.联合体大小必须能容纳联合体中最大的成员变量2.通过规则1 计算出的联合体大小必须是联合体中占内存大小最大的成员类型的整数倍 #include<stdio.h>typedef union {char a[7];int b; }test_union_1;typedef union {char a[6];char b; }test_un…

氢辉能源|[4GW]质子交换膜产线投产发布会暨[3MW]PEM电解槽正式交付

2023年7月12日下午&#xff0c;氢辉能源&#xff08;深圳&#xff09;有限公司&#xff08;以下简称氢辉能源&#xff09;质子交换膜产线投产发布会暨12台50标方3MW电解槽交付仪式在深圳市龙岗区国际低碳城成功举办。 此外&#xff0c;氢辉能源与远景能源、润世华集团、宏洲新能…

005-NULL和NOT NULL

通过desc命令获取数据表结构&#xff0c;当NULL column 字段为YES时&#xff0c;表示列表字段可以为空&#xff08;可以不插入数据&#xff09;&#xff0c;如&#xff1a; 可以设置Null 列表字段不能为空&#xff08;字段后面添加 not null&#xff09;&#xff0c;如&#xf…

StringBuffer类 StringBuilder 类

StringBuffer类 介绍 StringBuffer是一个容器&#xff0c;代表可变的字符序列&#xff0c;可以对字符串内容进行增删。 StringBuffer是可变长度的。 实现了序列化接口&#xff0c;可实现串行化&#xff08;可以将内容保存至文件或者网络传输&#xff09;&#xff1a; Serial…

吴恩达机器学习2022-Jupyter-机器学习实例

1 可选实验: 特征工程和多项式回归 1.1 目标 在这个实验室里: 探索特征工程和多项式回归&#xff0c;它可以让你使用线性回归机制来适应非常复杂&#xff0c;甚至非常非线性的函数。 1.2 工具 您将利用在以前的实验中开发的函数以及matplotlib和NumPy。 2 特征工程与多项式…

Linux内核模块开发 第 9 章 谈及设备文件

The Linux Kernel Module Programming Guide Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang译 断水客&#xff08;WaterCutter&#xff09;源 LKMPG 9 谈及设备文件 设备文件被用于表示物理设备。多数物理设备既被用于输入&#xff0c;也被用…

【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

OpenCV开发实战 --(C++/Python) 进行视频中的简单背景估计-附源码

在许多计算机视觉应用中,您可以使用的处理能力较低。在这种情况下,我们必须使用简单但有效的技术。 在这篇文章中,我们将介绍一种这样的技术,用于在相机静态且场景中存在一些移动物体时估计场景的背景。这种情况并不少见。例如,许多交通和监控摄像头都是固定固定的。 时间…

Python爬虫——urllib_请求对象定制

UA介绍&#xff1a; User Agent中文名为用户代理&#xff0c;j简称UA&#xff0c;它是一个特殊字符串头&#xff0c;使得服务器能够识别客户使用的操作系统及版本&#xff0c;cpu类型&#xff0c;浏览器及版本&#xff0c;浏览器内核&#xff0c;浏览器渲染引擎&#xff0c;浏览…

【编译之美】【4. 代码优化:为什么你的代码比他的更高效】

什么是代码优化 代码优化是编译器后端的两大工作之一&#xff0c;弄懂它&#xff0c;你就掌握了一大块后端技术。 代码优化的目标 代码优化的目标&#xff0c;是优化程序对计算机资源的使用。 代码优化的对象 大多数的代码优化都是在 IR 上做的&#xff0c;而不是在前一阶段…

wvp-GB28181-pro /ZLMediaKit 部署学习

前言&#xff1a; 请认真阅读作者提供的文档&#xff01;认真阅读&#xff01;认真阅读&#xff01;认真阅读&#xff01; 背景&#xff1a; 公司项目需要对接不同地方的监控设备&#xff08;海康、大华、火星等等未知设备&#xff09;。由于本人对于海康设备不太了解出现一大…

CAD Exchanger SDK 3.20.0 for Linux Crack

引入新格式 Autodesk Revit&#xff0c;支持 BIM 特定数据模型以及 CAD Exchanger 3.19.0 中的原生格式 CDXBIM 独立于 Revit 软件读取 RVT 文件&#xff0c;使用 BIM 特定数据模型探索 BIM 属性&#xff0c;并利用我们专有的 BIM 友好 CDXBIM 格式更快地加载大型模型。 BIM数…

运维自动化前三阶段

运维自动化前三阶段 纯手工阶段&#xff1a;手工操作重复地进行软件部署和运维&#xff1b; 脚本阶段&#xff1a;通过编写脚本、方便地进行软件部署和运维&#xff1b; 工具阶段&#xff1a;借助第三方工具高效、方便地进行软件部署和运维。 这几个阶段是随着运维知识、经验…

tcn介绍

tcn 介绍 背景 对于大多数深度学习从业者来说&#xff0c;序列建模是递归网络的代名词。 然而&#xff0c;最近的结果表明&#xff0c;卷积架构在音频合成和机器翻译等任务上可以优于递归网络。给定一个新的序列建模任务或数据集&#xff0c;应该使用哪种架构&#xff1f;我…

Apple visionOS UI设计规范

果发布首款 MR 设备 Vision Pro&#xff0c;正在倡导用于Vision Pro在真实空间中显示应用程序窗口和内容“空间用户界面设计”&#xff0c;苹果的设计团队解释了开发人员应该知道的空间用户界面设计的原则。visionOSUI设计规范 支持&#xff1a;sketch Vision Pro中安装的visio…

无线电音频-BPA600蓝牙协议分析仪名词解析

1 介绍 2 Baseband基带分析 (1)Delta 是什么含义? "Delta" 有多个含义,取决于上下文。以下是常见的几种含义: 希腊字母:Delta&#x

“layui助力博客管理升级!用增删改查功能打造优质博客体验“

目录 引文1.前置条件2.数据接口2.1 UserDao(CRUD)2.2 R工具类 3.HTML 结构3.1 主界面的HTML3.2 用户的查询所有界面的HTML3.3 新增修改通用的的HTML 4.JavaScript 代码4.1 用户的CRUD javaScript 代码(userManage)4.2 新增修改的javaScript代码(userEdit) 5. 运行截图总结 引文…

【SpringBoot构建Hippo4j-Client安装部署教程】

&#x1f680; 线程池管理工具-Hippo4j &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#…