python怎么删除链表的倒数第N个节点
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2025年02月02日python怎么删除链表的倒数第N个节点
本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
【题目】
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
【思路】
解法一:遍历链表,得到链表长度N。那么删除倒数第n个节点,即为删除第N - n个节点。找到第N - n -1个节点,记为p,q = p.next, p.next=p.next.next, del p(记得清除内存)。
唯一的问题是:如何删除第1个元素,需要单独判断?可以不用这么麻烦:增加一个无意义的头结点,所有的删除逻辑都变成一致的了!
解法二:使用两个指针first和second遍历链表,首先,first指针前进n步,second指针不变;紧接着,first指针和second指针同时前进,直到first.next为None。此时,second指针指向的是倒数第n+1个节点,second.next = second.next.next同时删除无用内存即可。(删除第1个元素的代码逻辑与其它元素的不一样,解决方法参考解法一的说明。)
【代码】
python版本
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# 增加空的头结点,使得逻辑一致
node = ListNode(val=0, next=head)
head = node
# 找到第n-1个节点
count = 0
p = head
while count < n:
count += 1
p = p.next
# 找到倒数第n+1个节点
q = head
while p.next:
p = p.next
q = q.next
# 删除倒数第n个节点
r = q.next
q.next = q.next.next
del r
return head.next
读到这里,这篇"python怎么删除链表的倒数第N个节点"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
节点
指针
元素
文章
结点
解法
逻辑
一致
代码
内存
内容
同时
思路
妥当
有效
不用
两个
指向
新知
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
游戏软件开发培训机构排名
gallica数据库
普陀区生态网络技术销售厂
2012网络安全宣传周
数据库始祖
科研助力网络安全
中文单字数据库
福建施工oa管控软件开发平台
天际下载软件开发
国家认可网络安全产业园
php服务器编程
叠加网络技术解决了
数据库xs无效
数据库中汉字乱码
三星电视怎么设置网络安全
无法访问数据库
数据库技术基础的知识点
大唐网络技术
软件开发前十
网络安全文明许可证
FRIENDS下载软件开发
查询人类遗传力的数据库
湖南不缺暖阳网络技术有限公司
全国钻孔数据库
天际下载软件开发
邵阳市互联网科技公司
企业网络安全实践活动
数据库中汉字乱码
重庆暗护者网络安全技术有限公司
宜都租房软件开发