leetcode中如何删除链表的倒数第N个节点
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定
千家信息网最后更新 2025年02月03日leetcode中如何删除链表的倒数第N个节点
小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n
保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
解题方案
思路
标签:链表
整体思路是让前面的指针先移动
n
步,之后前后指针共同移动直到前面的指针到尾部为止首先设立预先指针pre,预先指针是一个小技巧,在第2题中进行了讲解
设预先指针
pre
的下一个节点指向head
,设前指针为start
,后指针为end
,二者都等于pre
start
先向前移动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安全错误
数据库的锁怎样保障安全
润和有云计算网络安全
内蒙古九一互联网科技
广州科技互联网为什么不好
数据库技术之读写分离
2019域控服务器添加客户
数据库安全管理和备份与恢复
天水商城分销软件开发
诺基亚gps定位服务器地址
上海卫生健康行业网络安全竞赛
网络安全工程师考证需要学什么
foxmail数据库
王者荣耀新服务器好处
综述类文章一般在哪个数据库
如何攻击服务器ip
海南招聘网络技术员
工业控制网络技术第四章
意识形态工作 网络安全
福州众柜网络技术有限公司
康展互联网科技
软件开发商属于法人
西峰公积金管理部网络安全
云桌面服务器
宁夏网络安全 竞赛
全球网络安全战略
网络安全知名培训
有锁机怎清除数据库
巴中市青少年网络安全知识竞赛
中兴服务器如何进入阵列
琶洲互联网科技总部
数据库的代码可以用中文写吗