leetcode 19. 删除链表的倒数第 N 个结点 js实现
给你一个链表,删除链表的倒数第 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
/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @param {number} n * @return {ListNode} */ // 使用双指针 // 第一个指针先走 n 步,然后两个指针一起走,当第一个指针到达末尾的时候,第二个指针刚好指向被删除的节点位置 // 为了找到被删除的节点的上一个节点,方便删除,所以定义一个哑结点,作为 second 指针 var removeNthFromEnd = function(head, n) { if(!head){ return head } // 定义哑节点 let dummy = new ListNode(); // 将哑结点下一个指向 head dummy.next = head; // 定义第一个指针 let first = head; // 定义第二个指针指向哑结点 let second = dummy; // 先将第一个指针走 n 步 for(let i=0;i<n;i++){ first = first.next; } // 两个指针同时走,当 first节点不存在,在停止遍历 while(first){ first = first.next; second = second.next; } // 这时的 second 刚好是要删除的节点的上一个节点,改变节点的指向 second.next = second.next.next; // 返回哑结点的下一个节点 return dummy.next; };
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南