leetcode中如何删除链表的倒数第N个节点
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定
千家信息网最后更新 2026年11月01日leetcode中如何删除链表的倒数第N个节点
小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解题方案
思路
标签:链表
整体思路是让前面的指针先移动
n步,之后前后指针共同移动直到前面的指针到尾部为止首先设立预先指针pre,预先指针是一个小技巧,在第2题中进行了讲解
设预先指针
pre的下一个节点指向head,设前指针为start,后指针为end,二者都等于prestart先向前移动n步之后
start和end共同向前移动,此时二者的距离为n,当start到尾部时,end的位置恰好为倒数第n个节点因为要删除该节点,所以要移动到该节点的前一个才能删除,所以循环结束条件为
start.next != null删除后返回
pre.next,为什么不直接返回head呢,因为head有可能是被删掉的点时间复杂度:O(n)
代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = new ListNode(0); pre.next = head; ListNode start = pre, end = pre; while(n != 0) { start = start.next; n--; } while(start.next != null) { start = start.next; end = end.next; } end.next = end.next.next; return pre.next; }}画解


以上是"leetcode中如何删除链表的倒数第N个节点"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
节点
指针
移动
篇文章
内容
尾部
思路
复杂
有效
不怎么
代码
位置
复杂度
大部分
技巧
指向
整体
方案
时间
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
互联网科技工作委员会主任
深圳互联网络科技有限公司
互联网与新科技
狮子座互联网科技有限公司
互联网科技上市公司
伴你行互联网科技有限公司
苏州大垚互联网科技
互联网科技博客
甘肃拓世互联网科技有限公司
蓝色互联网科技
晋城互联网科技
群盈汇互联网科技有限公司
郑州欣桑互联网科技有限公司
中国科技和美国互联网
互联网科技收购价值
兰石爱特工业互联网科技分公司
福仕德教育科技互联网
互联网科技和医药行业
山东蛋芒互联网科技有限公司
互联网最新的科技
北京互联网科技公司
杭州互联网科技公司
联恩商钥互联网科技有限公司
北京三清互联网科技
北京华百购互联网科技有限公司
岳阳华臻互联网科技有限公司
晓花互联网科技有限公司网址
四川慕妮娅互联网科技有限公司
上海京穆互联网科技有限公司