leetcode中如何删除链表的倒数第N个节点
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
中国进口汽车数据库怎样登录
网络安全中央党校
samba服务器进程
康佳电视服务器下载不上东西
服务器源库
创建数据库的总结语
浙江软件开发解决方案报价
工业控制网络技术发展趋势
湖北电子软件开发诚信服务
赛迪网络安全所所长
南浔泽茂网络技术服务部
服务软件开发公司有哪些
网络显示没问题但无法连接服务器
未转变者多人服务器解说
pdh是有线传输网络技术吗
数据库建立查询
网吧服务器连接电脑只有百兆
中国台湾超频服务器咨询报价
阿里云数据库解析
安防监控需要连接服务器吗
手机怎么清空搜狗数据库
数据库读取年月日
组建网络安全工作专班
服务器无法映射
网络安全科普手册
阴阳师 服务器进不去
天津pdu服务器电源都有哪些
网络安全攻防大赛南航
滁州oa管理软件开发多少钱
创建数据库没有表