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

LeetCode 分类刷题:92. 反转链表 II

题目

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

解析

灵神讲解:

【基础算法精讲 06】

注意第一句!!!p0 = dummy = ListNode(next=head)

p0 = dummy = ListNode(next=head)这一行很容易让人混淆,因为一旦写成p0 = ListNode(next=head),dummy = ListNode(next=head)就会报错。和列表元素不同,因为p0和dummy都是类的实例,p0指向p0.next之后,dummy的内存地址仍然和原来的p0一样保持不变。

作者:桑榆

链接:https://leetcode.cn/problems/reverse-linked-list-ii/solutions/1992226/you-xie-cuo-liao-yi-ge-shi-pin-jiang-tou-teqq/comments/2270952/

来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

----------------------------------------------------------------------------------------------------------

在 Python 中,赋值语句p0 = dummy = ListNode(next=head)和 p0 = ListNode(next=head); dummy = ListNode(next=head) 之间存在很大的不同,尤其是在处理类的实例时。这种区别源于赋值语句的工作方式和对象引用的概念。

赋值和对象引用

单一赋值语句(链式赋值):
p0 = dummy = ListNode(next=head)
在这条语句中,首先创建一个新的 ListNode 对象 ListNode(next=head),然后将 p0 和 dummy 都指向这个新创建的对象。这意味着 p0 和 dummy 引用的是同一个 ListNode 实例

如果你通过 p0 访问或修改该对象的属性,这些更改在 dummy 中也是可见的,反之亦然。

独立赋值语句:
p0 = ListNode(next=head) dummy = ListNode(next=head)
在这种情况下,两次创建了不同的 ListNode 对象。因此,p0 和 dummy 指向的是两个独立的对象,它们的内存地址不同。修改 p0 所指向对象的属性不会影响 dummy 所指向的对象,反之亦然。

作者:寒冬夜行人

链接:https://leetcode.cn/problems/reverse-linked-list-ii/solutions/1992226/you-xie-cuo-liao-yi-ge-shi-pin-jiang-tou-teqq/comments/2332001/

来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

答案

class Solution:def reverseBetween(self, head: Optional[ListNode], left: int, right: int) -> Optional[ListNode]:p0 = dummy = ListNode(next=head)for _ in range(left - 1):p0 = p0.nextpre = Nonecur = p0.nextfor _ in range(right - left + 1):nxt = cur.nextcur.next = pre  # 每次循环只修改一个 next,方便大家理解pre = curcur = nxt# 见视频p0.next.next = curp0.next = prereturn dummy.next# 作者:灵茶山艾府
# 链接:https://leetcode.cn/problems/reverse-linked-list-ii/solutions/1992226/you-xie-cuo-liao-yi-ge-shi-pin-jiang-tou-teqq/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析

时间复杂度:O(right)。

空间复杂度:O(1)。

http://www.dtcms.com/a/473730.html

相关文章:

  • 视频背景音乐怎么做mp3下载网站wordpress 密码验证失败
  • 医疗区块链:电子病历的零知识证明实现
  • Redis 核心文件、命令与操作指南
  • 使用 httpsok 给 QNAP NAS 添加阿里云域名的永久免费 HTTPS(SSL)证书
  • AI加持的SEO新纪元:用提示词打造高质量内容生产线
  • Manim环境搭建--FFmpeg环境安装
  • JAVA集合框架详解
  • svn and maven 自动部署shell脚本
  • 电影网站如何做长尾关键词网站建立需要什么技术
  • 网站制作英文版网站肥西县建设局资询网站
  • 腾讯开源80B参数混元图像3.0模型:AI作画正在“拥有大脑”
  • HTTP 的方法和状态码
  • 废品网站怎么做wordpress 评论 顶踩 心 插件
  • 用AI重构HR Tech:绚星绚才,将HR专业能力转化为业务增长引擎
  • R绘制股票日波动线图 中国海油600938
  • Mysql和MyBatis的缓存机制
  • 免费建站系统官网上海seo有哪些公司
  • Linux系统--进程间通信--共享内存(主使用)
  • BOOST电路的一些小理解
  • JavaWeb登录模块完整实现解析:从前端点击到后端验证的全流程
  • 【pytorch】合并与分割
  • 从AI画稿到3D虚拟时装:Illustrator与Substance 3D的服装设计工作流
  • 【VGGT-X】:尝试将VGGT用到3DGS重建中去
  • 海珠区建设和水务局网站网站建设夜猫
  • 用 Go 优雅应对网络抖动与断线重连:打造健壮的网络应用
  • C++ : 智能指针的补充和特殊类的设计
  • 【完整源码+数据集+部署教程】 航拍水体检测图像分割系统源码和数据集:改进yolo11-DLKA
  • 公司查询网站查询系统景点介绍网站开发设计
  • 如何定位 TCP TIME_WAIT ,并优化这个问题
  • DDD记账软件实战四|从0-1设计实现企业级记账微服务