leetcode中如何删除链表的倒数第N个节点
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定
千家信息网最后更新 2024年11月11日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安全错误
数据库的锁怎样保障安全
威高软件开发面试
乐视视频软件开发
外交部回应网络安全问题
车辆预约平台的服务器加载不出来
山西职业软件开发报价
平安软件开发面试题
电商企业会计核算加强网络安全
国安网络安全竞赛答题给分规则
瑞牛网络技术有限公司
数据库,同一字段的值分开
网络安全诈骗教案
轻量服务器可以转给别人吗
衢州是互联网科技公司
秦皇岛媒体服务器价格
网络安全教育测试题
校园网络安全情况自查报告
虚拟机本地数据库安装后启动不了
双色球统计数据库
数据库两表全关联
没有服务器可以备案吗
池州求职招聘软件开发外包公司
属于网络安全威胁的有
视图 远程sql数据库
网络技术简介
软件开发公司相关资质
怎么查找公司大数据库
计算机三级考试网络技术填空题
linux服务器共享端口有哪些
江苏工业点胶软件开发
软件开发行业体会