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

【算法】92.翻转链表Ⅱ--通俗讲解

一、题目是啥?一句话说清

给你一个链表和两个整数 left 和 right,反转从第 left 个节点到第 right 个节点的子链表,并返回反转后的链表。其他部分保持不变。

示例:

  • 输入:head = [1,2,3,4,5], left = 2, right = 4
  • 输出:[1,4,3,2,5](反转了从第2到第4个节点)

二、解题核心

使用哑节点简化操作,找到要反转子链表的前一个节点,断开子链表,反转它,然后重新连接回原链表。 这就像把链表的一段剪下来,反转后再缝回去。

三、关键在哪里?(3个核心点)

想理解并解决这道题,必须抓住以下三个关键点:

1. 哑节点(Dummy Node)的使用

  • 是什么:在链表头部添加一个哑节点,其 next 指向头节点。
  • 为什么重要:当 left 为 1 时,头节点会被反转,哑节点可以避免处理头节点变化的特殊情况,使代码更统一。

2. 找到关键节点

  • 是什么:找到要反转子链表的前一个节点(pre)、子链表的开始节点(start)和结束节点(end)。
  • 为什么重要:只有准确找到这些节点,才能正确断开和连接子链表。

3. 反转子链表并重新连接

  • 是什么:断开子链表后,反转它,然后将反转后的子链表头连接到 pre 的 next,将反转后的子链表尾连接到原链表的后续节点。
  • 为什么重要:如果连接错误,链表会断开或形成环。

四、看图理解流程(通俗理解版本)

让我们用链表 1 → 2 → 3 → 4 → 5 和 left=2, right=4 的例子来可视化过程:

  1. 初始化

    • 创建哑节点 dummy,其 next 指向头节点 1。
    • 初始状态:dummy → 1 → 2 → 3 → 4 → 5
  2. 找到 pre 节点

    • pre 节点是反转部分的前一个节点,即第 left-1 个节点。这里 left=2,所以 pre 是第 1 个节点,即节点 1。
    • 从 dummy 移动 left-1=1 步,pre 指向节点 1。
  3. 找到 start 和 end 节点

    • start 节点是 pre 的 next,即节点 2。
    • end 节点是反转部分的最后一个节点,从 start 移动 right-left=2 步,即节点 4。
  4. 断开子链表

    • 记录 end 的下一个节点 succ,即节点 5。
    • 将 end 的 next 设为 null,断开子链表:子链表为 2 → 3 → 4 → null
  5. 反转子链表

    • 反转子链表:4 → 3 → 2 → null
    • 反转后的头节点是 4,尾节点是 2。
  6. 重新连接

    • 将 pre 的 next(即节点 1 的 next)指向反转后的头节点 4。
    • 将反转后的尾节点 2 的 next 指向 succ(节点 5)。
    • 最终链表:dummy → 1 → 4 → 3 → 2 → 5
  7. 返回结果:返回 dummy.next,即节点 1。

五、C++ 代码实现(附详细注释)

#include <iostream>
using namespace std;// 链表节点定义
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr
http://www.xdnf.cn/news/20515.html

相关文章:

  • Vue 3项目中引用ECharts并设计多种图表组件的实现方案
  • 行政区划编码树形题解
  • 09_多态
  • `IntersectionObserver`延迟加载不在首屏的自动播放视频/图片/埋点/
  • Boost电路:稳态和小信号分析
  • Linux匿名管道和命名管道以及共享内存
  • C++并发编程指南 递归锁 介绍
  • Kimi K2-0905 256K 上下文 API 状态管理优化教程
  • 2.虚拟内存:分页、分段、页面置换算法
  • 分享一个基于Python+大数据的房地产一手房成交数据关联分析与可视化系统,基于机器学习的深圳房产价格走势分析与预测系统
  • Embedding上限在哪里?- On the Theoretical Limitations of Embedding-Based Retrieval
  • AI产品经理面试宝典第86天:提示词设计核心原则与面试应答策略
  • 《sklearn机器学习——聚类性能指标》Calinski-Harabaz 指数
  • Wisdom SSH 是一款搭载强大 AI 助手的工具,能显著简化服务器配置管理流程。
  • SSH服务远程安全登录
  • Linux系统shell脚本(四)
  • CodeSandbox Desktop:零配置项目启动工具,实现项目环境隔离与Github无缝同步
  • AI大模型应用研发工程师面试知识准备目录
  • 苍穹外卖优化-续
  • Java包装类型
  • Git 长命令变短:一键设置别名
  • Linux以太网模块
  • 【嵌入式】【科普】AUTOSAR学习路径
  • 《无畏契约》游戏报错“缺少DirectX”?5种解决方案(附DirectX修复工具)
  • 基于单片机智能行李箱设计
  • 云手机运行流畅,秒开不卡顿
  • 无拥塞网络的辩证
  • 24.线程概念和控制(一)
  • 贪心算法应用:数字孪生同步问题详解
  • B.50.10.10-微服务与电商应用