当前位置: 首页 > news >正文

力扣热题100之删除链表的倒数第N个节点

题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

在这里插入图片描述

代码

方法一

将链表中的值放入列表中,然后删除倒数第n个值,再将剩下的数依次转化为链表

# 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: Optional[ListNode], n: int) -> Optional[ListNode]:head_list=[]while head:head_list.append(head.val)head=head.nexthead_list.pop(-n)if not head_list:return Noneres=ListNode(head_list[0])cur=resfor num in head_list[1:]:cur_node=ListNode(num)cur.next=cur_nodecur=cur.nextreturn res

方法二:

将构造一个新链表,计算链表长度通过遍历找到需要删除的节点的前驱节点。

# 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: Optional[ListNode], n: int) -> Optional[ListNode]:def getlength(head:ListNode)->int:length=0while head:length+=1head=head.nextreturn lengthdummy= ListNode(0,head)#在head头节点前面添加一个值为0的节点length=getlength(head)cur=dummyfor i in range(1,length-n+1):cur =cur.nextcur.next=cur.next.nextreturn dummy.next

方法三:

使用栈的思想找到需要删除的节点的前驱节点,然后使用和方法二相同的方法实现删除节点。

# 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: Optional[ListNode], n: int) -> Optional[ListNode]:dummy= ListNode(0,head)#在head头节点前面添加一个值为0的节点stack=[]cur=dummywhile cur:stack.append(cur)cur = cur.nextfor i in range(n):stack.pop()prev=stack[-1]#就是为了找到被删除节点的前驱节点prev.next=prev.next.nextreturn dummy.next

相关文章:

  • 鸿蒙 Location Kit(位置服务)
  • 双周报Vol.72:字段级文档注释支持、视图类型现为值类型,减少内存分配
  • Python网络爬虫入门指南
  • 【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器
  • 视图+触发器+临时表+派生表
  • 用于判断主子关系的方法的实现(orm是efcore)
  • [特殊字符] Word2Vec:将词映射到高维空间,它到底能解决什么问题?
  • 深入解析OkHttp与Retrofit:Android网络请求的黄金组合
  • 蓝桥杯1447 砝码称重
  • Python 实例传递的艺术:四大方法解析与最佳实践
  • 用 RefCounted + WeakPtr 构建线程安全的异步模块
  • 【OpenCV基础2】图像运算、水印、加密、摄像头
  • 如何在 Windows 11 或 10 上安装 FlutterFire CLI
  • CSS提高性能的方法有哪些
  • C++面试4-sizeof解析
  • RabbitMQ的简介
  • C 语言学习笔记(函数2)
  • AI在网络安全中的应用之钓鱼邮件检测
  • Python列表 vs 元组:全面对比解析(新手友好版)
  • MYSQL8.0常用窗口函数
  • 王毅同丹麦外交大臣会谈,表示在格陵兰问题充分尊重丹麦主权和领土完整
  • 夜驾遇东北虎隔窗对视?延吉林业局:村里有牛被咬死,保险公司会理赔
  • 意德首脑会谈,梅洛尼警告欧盟绿色政策面临“工业荒漠化”
  • 高途一季度净利润同比增长1108%: “与吴彦祖一起学英语”短时间内就实现了盈利
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题