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安全错误
数据库的锁怎样保障安全
全网搜低价的软件开发
班班通网络安全管理制度
mybits 数据库事务
长宁区智能网络技术采购信息
基因组数据库来自什么作图
中兴系统产品应用软件开发
北京创业公社互联网科技
淘宝数据库负责人
amd服务器芯片
深圳服务器回收
服务器网络安全应急预案演练
创建db2管理服务器时
dell服务器管理口做什么用的
个人手机网络安全自查自纠报告
软件开发人员需要记住什么
市网络安全检查的报告
数据库安全简介国内外
能连上数据库吗
学校安全教育和网络安全
数据库怎么替换表的文字段名字
北京时代网络技术五星服务
db2数据库增加主键字段
民权县网络安全张涛
温州物联网智慧学校软件开发
阿里云服务器如何传网页
cfree能连接数据库吗
软件开发合同 调试费
怎样将员工照片上传服务器
维普中文期刊全文数据库
网络技术包括