leetcode中如何删除链表的倒数第N个节点
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,小编给大家分享一下leetcode中如何删除链表的倒数第N个节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目描述给定
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
公积金网上提取失败 服务器异常
联合网络安全审查
怎么搭建极限追猎服务器
互联网公司服务器系统
mysql数据库无法添加表
电视连接服务器失败了
腾讯服务器机房部门
自己搭建mac服务器
sugon服务器管理软件
初始化mysql 数据库
查看服务器带宽windows
云服务器安装包乱码
数据库技术选择
软件开发涉及哪些费用
关于网络安全手抄内容
数据库软件课程设计考试管理系统
网络安全刑事司法保护
泰拉瑞亚软核服务器ip地址
数据库网络技术面试
张峥网络安全讲座
网管网络安全
电子软件开发成果报告书
地平线4线上模式连接不到服务器
电视连接服务器失败了
cctv3网络安全节目
有线传输网络技术微波
警察失踪人口数据库
bark服务器 http
莆田app软件开发
dpf数据库文件