python怎么删除链表的倒数第N个节点
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文小编为大家详细介绍"python怎么删除链表的倒数第N个节点",内容详细,步骤清晰,细节处理妥当,希望这篇"python怎么删除链表的倒数第N个节点"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网科技有限公司
深圳恒合互联网络科技有限公司
今日互联网科技
工业互联网科技新基建
互联网科技的英文
未来的互联网科技
电子科技大学互联网
互联网高科技企业
亿人帮互联网科技
蓝色互联网科技
开启互联网科技时代小说
西藏七维空间互联网科技有限公司
青海科技产业互联网发展
四川慕妮娅互联网科技有限公司
互联网金融科技名词解释
互联网科技数字货币
上海乐五互联网科技有限公司
广州梦谷互联网科技有限公司领导
长沙渺峰互联网科技有限公司
悟空问答互联网科技
云信互联网科技有限公司
与互联网科技公司
天津摩尔互联网科技
丰台科技园 互联网
厦门比较好的科技互联网公司
互联网科技产业特征
银川新华互联网科技学校联系电话
晋城互联网科技
本届互联网大会上的黑科技
中国科技和美国互联网