python怎么删除链表的倒数第N个节点
发表于:2024-10-26 作者:千家信息网编辑
千家信息网最后更新 2024年10月26日,本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2024年10月26日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安全错误
数据库的锁怎样保障安全
徐州推广软件开发供应
软件开发知名公司有哪些
创建文件服务器
服务器管理口能看硬盘数据
网络安全厂商前景
内网服务器可以发挥哪些作用
xshell软件开发环境
oracle数据库的ed
集群使用同一个数据库
四种打开数据库文件的方法
福建学校卫星授时服务器
udp视频服务器
部队里有网络安全侦察兵吗
网络安全模式里能重装系统
菏泽市牡丹区汇特网络技术
求生之路2怎么看服务器名字
厦门软件开发公司电话
软件开发专业的简历
url访问服务器地址
第九届首都网络安全日直播回放
服务器管理口能看硬盘数据
网络安全技术与实训考点
铁路信息网络安全
网络安全周会议主持词
数据库拥有属性的关系
网络安全知识公共课
厦门软件开发公司电话
腾讯云如何查看我的服务器配置
境外服务器色情
聚何庄互联网科技