算法第十五天:leetcode19.删除链表的倒数第N个节点

一、删除链表的倒数第N个节点的题目描述与链接

19.删除链表的倒数第N个节点的链接 如下表所示,您可直接复制下面网址进入力扣学习,在观看下面的内容之前您一定要先做一遍哦,以便让我印象更深刻!!!
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/

题目描述如下:

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

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

二、Java版

该题可用虚拟头结点和双指针的方法解决,具体代码如下所示:

java 复制代码
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummyhead=new ListNode(-1); //创建虚拟头结点
        dummyhead.next=head;
        ListNode fast=dummyhead;  //快指针
        ListNode slow=dummyhead;  //慢指针
        for(int i=0;i<=n;i++){
            fast=fast.next;
        }
        while(fast!=null){
            fast=fast.next;
            slow=slow.next;
        }
        if(slow.next!=null){
            slow.next=slow.next.next;
        }
        return dummyhead.next;
    }
}

三、 删除链表的倒数第N个节点的具体思路

  • 定义slow指针和fast指针,初始值为虚拟头节点。如图一:

图一

  • fast首先走n+1步,slow才能指向删除节点的上一个节点,如图二:

图二

  • slow和fast同时移动,直到fast指向末尾,如图三:

图三

  • 删除slow指向的下一个节点,如图四:

图四

最后,感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您有用的算法知识和启发。希望本题对大家有帮助,谢谢各位读者的支持!!!

相关推荐
We་ct9 分钟前
LeetCode 4. 寻找两个正序数组的中位数:二分优化思路详解
前端·数据结构·算法·leetcode·typescript·二分
仍然.36 分钟前
算法题目---位运算
算法
计算机安禾1 小时前
【数据结构与算法】第10篇:项目实战:学生信息管理系统(线性表版)
开发语言·数据结构·算法·visual studio
q_35488851531 小时前
计算机毕业设计:汽车数据可视化与智能分析平台 Django框架 Scrapy爬虫 可视化 车辆 懂车帝大数据 数据分析 机器学习(建议收藏)✅
算法·信息可视化·django·flask·汽车·课程设计·美食
FakeOccupational1 小时前
【电路笔记 通信】IEEE 1588精密时间协议(PTP):数学假设+时间同步链路建模+消除主从偏差算法
笔记·算法
客卿1231 小时前
最小生成树(贪心)--构造回文串(字符串 + 回文判断 + 构造)
java·开发语言·算法
88号技师1 小时前
2026年3月中科院一区SCI-赏金猎人优化算法Bounty Hunter Optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
再卷也是菜1 小时前
算法基础篇(12)Trie树
算法·字典树
小糯米6011 小时前
C++ 单调栈原理与模板
开发语言·c++·算法
常利兵2 小时前
Android 集合探秘:ArrayMap 与 SparseArray 的奇妙之旅
android·算法·哈希算法