LeetCode 92. 反转链表 II

【中等】力扣算法题解析LeetCode92:反转链表 II 题目要求反转链表中从位置 left 到 right 的节点。通过创建虚拟头节点简化边界处理,定位反转区间的前驱节点后,迭代反转局部链表,最后重新连接。核心步骤包括:虚拟头节点初始化、前驱节点定位、区间反转(通过 prev 和 curr 指针)以及链表重连。Java 实现仅需一次遍历,时间复杂度 O(n),空间复杂度 O(1)。示例验证了算法的正确性,适用于边界条件(如 left=right 或头节点反转)。进阶要求的一趟扫描已满足。 阅读详情

描述

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

思路

此题和第206.反转链表差不多,只不过变成了反转其中的某一段链表,当m为1,n为链表长度时就是一样的题了。206.反转链表可以使用双指针迭代法和递归法解决这道题用双指针迭代法比较简单,如果使用递归的话需要设置计数器来控制递归次数,较复杂,而且不如迭代高效,我尝试后失败了几次就放弃了。
双指针迭代法:先设置哨兵结点,指向head结点,这样可以保证left为1即从第一个结点开始反转的话,head结点也有其前驱结点可以保存位置。然后使用head作为当前结点,pre作为被反转前的那段链表的结点。head始终指向需要被反转的那段链表的第一个结点,当head到达right位置时反转完成。

解答

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        //哨兵结点,指向head结点,避免left为1时无法从head结点开始反转,
        //这样即使从head结点开始反转也能找到头结点在哪
        ListNode* sentry = new ListNode(0, head);
        ListNode* pre = sentry;//开始反转的链表结点的前驱结点
        for(int i = 1;i < left; ++ i) pre = pre->next;
        head = pre->next;//head是需要反转的链表部分的首结点,pre是其前驱结点
        for(int j = left;j < right; ++ j){//双指针法迭代,开始反转链表,执行right-left次刚好反转完成
            ListNode* tmp = head->next;//暂时记录head的下一个节点
            head->next = tmp->next;//或者= head->next->next
            tmp->next = pre->next;
            pre->next = tmp;
        }
        return sentry->next;
    }
};
PPT太丑?用InDesign制作电影级的交互式在线演示文档 本文旨在解决传统演示软件(如PowerPoint、Keynote)在制作商业提案、设计报告时,普遍存在的模板化严重、视觉表现力不足、动态效果廉价的核心痛点。我们将介绍一套常被设计师们“误解”或“忽略”的“降维打击”工作流,核心是利用印刷排版软件 Adobe InDesign 强大的版式控制、动画与交互功能,来创建电影级的动态演示文稿,并通过其 在线发布 (Publish Online) 功能,一键生成可在任何浏览器中流畅访问的网页版交互式文档,从而极大地提升提案的专业度与视觉冲击力。 阅读详情

相关推荐

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 240

LeetCode——92. 反转链表 II

92. 反转链表 II 题目 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-linked-list-ii 著作权归领扣网络所有。商业转载

HizT_1999的博客 408

【73页PPT】美的简单高效的管理逻辑(附下载方式)

其科技领先战略依托四级研发体系(中央研究院、事业部、前沿技术、产品开发)与 “三个一代” 模式(开发一代、储备一代、研究一代),构建全球研发布局(“2+4+N” 体系,含顺德、上海双总部,美、德、意、日四大研发中心及分布式创新节点),研发投入强度持续提升。MBS(美的精益运营体系)以 “12345” 为方法论:始于客户需求,借鉴顶级企业实践,以战略部署、人才育成、日常管理为核心,追求质量、交付、成本、创新四大目标,通过精益五步法(定价值、析流、促流动、拉系统、尽善美)实现全链条优化。

2501_92808811的博客 1102

编程题---反转从位置 m 到 n 的链表

解题思路 代码实现(以上图来解释) /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseBetween(struct ListNode* head, in...

IT_xiaoye的博客 2822

CoppeliaSim远程API实战:用Python控制仿真机器人,5步搞定外部通信

本文详细介绍了如何使用Python通过CoppeliaSim远程API控制仿真机器人,实现外部通信的5个关键步骤。从环境配置到双向通信模式,再到实战案例和性能优化技巧,帮助开发者高效连接算法开发与物理验证。特别对比了B0与传统API的性能差异,提升工业自动化项目的开发效率。

weixin_28733637的博客 366

工业金属表面缺陷检测:4种光学成像方案(明/暗/漫/背光)选型与实测对比

本文深入探讨工业金属表面缺陷检测中的4种光学成像方案(明/暗/漫/背光),详细解析其物理原理、适用场景及实测效果。通过对比不同照明方案在铝合金轮毂、不锈钢餐具等实际工业场景中的表现,提供科学的选型决策树,帮助提升缺陷检出率至99%以上,为计算机视觉在工业质检领域的应用提供实用指南。

weixin_33624741的博客 388

LeetCode第92题_反转链表II

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

qq_40263592的博客 2690

微信DAT图片恢复全攻略:从文件路径到批量解密(附最新工具下载)

本文详细介绍了微信DAT图片恢复的全过程,从文件路径定位到批量解密操作,帮助用户高效恢复加密存储的图片。文章涵盖新旧版本微信的存储结构差异,推荐使用专业解密工具进行批量转换,并提供了提升恢复成功率的实用技巧和常见问题解决方案。

weixin_29325007的博客 455

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

cur.next 指向 pre.next(节点 1 的 next 是节点 2,所以 cur.next 指向节点 2,形成循环)。cur.next 指向 pre.next(节点 2),将节点 3 插入到节点 2 后面。cur.next 指向 pre.next(节点 3),将节点 4 插入到节点 3 后面。此时节点 2 tail.next 指向 nxt(节点 4),保持剩余链表的连接。pre.next 断开与节点 2 的连接,更新为 cur(节点 3)。链表结构为 1->4->3->2->5->NULL。

q1111111da的博客 981

手把手教你学simulink(8.2)--simulink的实战案例:信号分析

通过以上步骤,你已经成功使用 Simulink 对信号进行了频谱分析和时域分析,提取了信号的有用信息。这个案例展示了如何创建 Simulink 模型、添加和连接模块、设置仿真参数、运行仿真以及分析结果。希望这个案例能帮助你更好地理解和使用 Simulink 进行信号分析。

MHD0815的博客 1123

五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

java专栏 969

力扣92题:反转链表 II

通过哨兵节点简化对头节点的处理逻辑,避免头节点变化时单独处理。

weixin_48941116的博客 1058

YOLOv11改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附创新修改后的C3k2DWRSeg)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv11中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPsYOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备。

Snu77的博客 4185

Leetcode 92. 反转链表 II C++

Leetcode 92. 反转链表 II 题目 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 测试样例 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 题解 用一个指针ahead指向m的前一个节点,先找到第m个节点p,同时用after指向p->next,反转操作便是p->next = after->

weixin_43750513的博客 207

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【LeetCode】92. 反转链表 II

输入:head = [1,2,3,4,5], left = 2, right = 4。这种方法先定位到反转范围,然后用标准的三指针反转法完成局部反转,最后重新连接链表。在需要反转的区间里,每遍历到一个节点,让这个新节点来到反转部分的起始位置。这种方法先完整反转局部链表,再进行连接,逻辑更符合常规的链表反转思路。输入:head = [5], left = 1, right = 1。的链表节点,返回 反转后的链表。输出:[1,4,3,2,5]

m0_73784704的博客 1025

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode 力扣 92. 反转链表 II

题目描述(中等难度) 给定链表的一个范围,将这个范围内的链表倒置。 解法一 首先找到 m 的位置,记录两端的节点 left1 和 left2 。 然后每遍历一个节点,就倒置一个节点。 到 n 的位置后,利用之前的 left1 和 left2 完成连接。 为了完成链表的倒置需要两个指针 pre 和 head。为了少考虑边界条件,例如 m = 1 的倒置。加一个哨兵节点 dummy。 m = 2,...

wind_liang的博客 939

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

力扣每日一题:92. 反转链表 II

目录题目:92. 反转链表 II示例1示例2提示解题思路解题代码(1)暴力法(2)头插法一次遍历解题感悟 题目:92. 反转链表 II 难度: 中等 题目: 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例1 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5] 示例2 输入:head = [5

aruewds的博客 409

【LeetCode: 92. 反转链表 II + 链表】

【LeetCode: 92. 反转链表 II + 链表】给你单链表的头指针 head 和两个整数 left 和 right ,其中 left

Coder_ljw的博客 822

golang力扣leetcode 92.反转链表II

92.反转链表II92.反转链表II题解代码 92.反转链表II 92.反转链表II 题解 代码 package leetcode type ListNode struct { Val int Next *ListNode } func reverseList(head *ListNode) *ListNode { curr := head var p *ListNode for curr != nil { next := curr.Next curr.Next = p p =

清风 599

leetcode92. 反转链表 II(单链表)

leetcode92. 反转链表 II 给定一个单链表的头指针head和两个整数left和right,其中left

m0_49844997的博客 725

leetcode 92. 反转链表 II

''' leetcode 92. 反转链表 II 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 算法:设置指针记录关键节点的索引位置,一共需要记录4个节点的位置 before 表示当前需要进行反转的子序列前一个节点,一旦找到before的位置,在整个程序运行过程中它不会发生改变 start 表示当前进行反转的子序列(在上次循环中)的起始...

WYXHAHAHA123的博客 237

LeetCode92-反转链表 II

今天下午就要CCF考试了 在考试前还是想发一篇文章 祝愿大家保佑我 哈哈哈哈哈哈哈哈 最近忙着这个 导致学习没有节奏了 搞完了正好可以好好看书了 嗯,加油!!! 92-反转链表 II 反转从位置m到n的链表。请使用一趟扫描完成反转。 说明: 1 ≤m≤n≤ 链表长度。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL, ...

飞奔的菜猪的博客 257

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

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left

yyh520025的博客 598

92. 反转链表 II(leetcode)

92. 反转链表 II 难度:中等 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5] 示例 2: 输入:head = [5], left = 1, right = 1 输出:[5] 提示: ...

m0_63442383的博客 1783

[题解] Leetcode 92 反转链表II

Leetcode 92 反转链表II 一、题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5] 示例 2: 输入:head = [5], left = 1, right = 1 输出:[5] 二、解法 我们之前在 Leetcode

maets906的博客 432

LeetCode-92. 反转链表 II【链表】

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left

zik的博客 595
上一篇: LeetCode 124. 二叉树中的最大路径和
下一篇: OJ ACM模式输入代码模板
MegaBytes
博客等级 码龄8年 45粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值