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

算法题(49):反转链表II

审题:

需要我们对指定范围的链表进行反转,并返回反转后链表的头结点

思路:

方法一:vector法

我们先遍历一次链表,并把数据对应的存在数组中,然后利用数组的reverse方法进行反转数据,最后再遍历一次链表把val值改掉即可

方法二:穿针引线法

我们可以看成某个区间进行整个链表的反转,然后左边界的前一个节点指向右边界,左边界节点指向右边界的下一个节点。

解题:

方法一:

注意:题目给的left和right不是索引,而是第几个数据的意思,所以左迭代器加的是left-1.而右迭代器指向的是最后一个有效数据的下一个位置,所以不用减一了

不过在面试中,我们一般处理链表的时候都不被允许改变val值,而是只能改变链表指向,所以我们有了方法二

方法二:

哨兵节点answer:由于可能会出现整个链表都反转的情况,而我们又需要prv节点,所以我们创建一个哨兵节点,这样就不会出现空指针的访问(nullptr->next)

解题步骤:

1.创建哨兵节点

2.确定反转链表的左右边界指针和prv节点,end节点

3.调用反转函数进行反转

4.进行链表链接

92. 反转链表 II - 力扣(LeetCode)


http://www.kler.cn/a/522090.html

相关文章:

  • AboutDialog组件的功能和用法
  • 关联传播和 Python 和 Scikit-learn 实现
  • USB 3.1-GL3510-52芯片原理图设计
  • 【C++题解】1393. 与7无关的数?
  • SpringCloud基础二(完结)
  • typescript 简介
  • Python3 OS模块中的文件/目录方法说明十二
  • DeepSeek R1:中国AI黑马的崛起与挑战
  • AI Agent的安全实践:权限控制与数据保护
  • 1. Java-MarkDown文件创建-工具类
  • 系统思维和升维思维以及它们对项目经理重要性
  • 定时任务Spring Task双向数据传输WebSocket
  • 第05章 14 绘制人脸部的PolyData并使用小圆锥体来展现法线
  • Go反射指南
  • 爱的魔力转圈圈,基于carsim与simulink模拟仰望u8原地调头
  • DeepSeek-R1 是否才是 “Open” AI?
  • YOLOv11改进,YOLOv11检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等任务
  • 航空客户价值的数据挖掘与分析(numpy+pandas+matplotlib+scikit-learn)
  • 基于STM32的循迹小车设计与实现
  • torch.tile 手动实现 kron+矩阵乘法
  • MongoDB中常用的几种高可用技术方案及优缺点
  • 基础项目实战——3D赛车(c++)
  • 把本地搭建的hexo博客部署到自己的服务器上
  • 网络工程师 (4)存储系统
  • 21款炫酷烟花合集
  • python selenium 用法教程