14-链表练习-剑指 Offer II 021. 删除链表的倒数第 n 个结点

news/2025/2/22 14:45:34

题目

给定一个链表,删除链表的倒数第 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]

提示:

    链表中结点的数目为 sz
    1 <= sz <= 30
    0 <= Node.val <= 100
    1 <= n <= sz (n符合规范,题目中不用判断其合法性)

进阶:能尝试使用一趟扫描实现吗?


思路

此题与上一题类似,采用快慢指针法。不同的是,此题的slow和fast两个快慢指针都是从dummyHead虚拟头节点开始向后走,这样可以确保当fast指向null时,slow恰好指向待删除节点的前一个节点,方便删除节点。


代码

/**
 * 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) {
        if(head == null) {
            return null;
        }
        ListNode dummyHead = new ListNode(-1);
        dummyHead.next = head;

        //采用快慢指针法先找到链表中倒数第n个节点
        ListNode slow = dummyHead, fast = dummyHead;
        //先让fast走n步
        for(int i = 0; i < n + 1; i++) {
            if(fast == null) {
                return head;
            }
            fast = fast.next;
        }
        //让slow和fast一起向后走
        while(fast != null) {
            slow = slow.next;
            fast = fast.next;
        }

        //此时slow就指向了待删除节点的前一个节点,删除要删的节点即可
        slow.next = slow.next.next;
        return dummyHead.next;
    }
}


http://www.niftyadmin.cn/n/180860.html

相关文章

Python代码的执行顺序/过程

1.python程序是按顺序自上而下执行的&#xff0c;而C中main()是程序的入口 例如以下代码&#xff0c;结果如注释所示&#xff0c;这里虽然有个main函数&#xff0c;但是最先输出的不是“main”而是“test1”&#xff1a; #test1print ("test1")def Fun():print (&qu…

认识抽象类

目录 1、纯虚函数的概念 2、抽象类的概念 3、抽象类的特性 4、抽象类的实际应用 1、纯虚函数的概念 被virtual关键字修饰的函数&#xff0c;我们称为虚函数&#xff1b;而在虚函数的后面加上 0&#xff0c;那么这个函数被称为纯虚函数。 virtual void Drive() 0; /…

ruoyi多个table多个form查询的实现

页面效果 tab页中多个不同的table查询&#xff0c;要不同的form搜索不同的table。 核心语法&#xff1a; table.set(tableid);//先设定table的id,再执行查询 $.table.search(fromid);//指定form搜索 汇总html,tab页实现 <!--<link rel"stylesheet" href"…

赓续前行 合衷向新——2023年度艾特网能合作伙伴大会成功召开

3月27日,以“赓续前行 合衷向新”为主题的2023年度艾特网能合作伙伴大会于滨海航天城海南文昌成功召开,来自全国各地的数百名业界嘉宾、合作伙伴欢聚一堂,共谱行业发展新篇。 欢迎致辞 常高新集团总经理助理、常高新金隆控股董事长兼总经理冯小玉先生莅临大会现场致辞,向来宾…

如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

本文系 NebulaGraph Community Academic 技术文档工程师 Abby 的参会观感&#xff0c;讲述了她在中国技术传播大会分享的收获以及感悟。 据说&#xff0c;技术内容领域、传播领域的专家和决策者们会在中国技术传播大会「tcworld China 2022」大会上分享心得。作为一名技术文档工…

一个完整的分布式追踪系统是什么样子的

一个完整的分布式追踪系统是什么样子的 现代分布式链路追踪公认的起源&#xff0c;是 Google 在 2010 年发表的论文《Dapper : a Large-Scale Distributed Systems Tracing Infrastructure》&#xff0c;这篇论文介绍了 Google 从 2004 年开始使用的分布式追踪系统 Dapper 的实…

ES搜索知识

1.安装&#xff1a;ES的安装使用(windows版)_懵懂无知、小菜鸟的博客-CSDN博客 2.JVM&#xff1a;安装ElasticSearch使用自带JDK_elasticsearch jdk__xiaoxiong的博客-CSDN博客 3.ES安装后用localhost:9200无法打开&#xff0c;是因为默认为SSL&#xff0c;修改一下ES/config…

文本数据标注,支持词典导入及更多快捷方式|ModelWhale 版本更新

燕舞莺歌时&#xff0c;春分节气至。ModelWhale 新一轮的版本更新&#xff0c;期待为你带来更棒的使用体验。本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a;新增 标注标签词典导入&#xff08;专业版✓ 团队版✓ &#xff09;新增 更多标注用快捷键&…