备战蓝桥杯————递归反转单链表的一部分
递归反转单链表已经明白了,递归反转单链表的一部分你知道怎么做吗?
一、反转链表Ⅱ
题目描述
给你单链表的头指针
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]
提示:
- 链表中节点数目为
n 1 <= n <= 500-500 <= Node.val <= 5001 <= left <= right <= n
进阶: 你可以使用一趟扫描完成反转吗?
解题思路及代码
reverseN 递归反转链表的算法,具体的思路如下:
- 函数 reverseN 用于反转以 head 为起点的前 n 个节点,并返回反转后的新头结点。
- 当 n 等于 1 时,表示只有一个节点需要反转,那么记录下第 n + 1 个节点(后驱节点 successor),并返回当前节点 head。
- 当 n 大于 1 时,递归调用 reverseN 函数反转前 n - 1 个节点,得到反转后的新头结点 last。
- 在反转的过程中,将 head 的下一个节点 head.next 的 next 指针指向 head,实现反转。
- 将 head 的 next 指针指向记录的后驱节点 successor,保证反转后的链表与后面的节点连接起来。
- 返回新的头结点 last,作为上一层递归的结果。
- 当 m 不等于 1 时,我们需要将 head 的索引视为 1,并且进行递归处理。此时,我们希望从第 m 个元素开始反转。因此,我们需要将 head.next 的索引视为 1,然后递归地处理head.next,将范围调整为从第 m - 1 个元素开始反转。
- 具体来说,对于 head.next.next,我们需要将 head.next.next 的索引视为 1。这意味着我们希望从 head.next.next 开始反转。因此,我们将递归地调用 reverseBetween 方法,并将 head.next.next 作为新的头结点,范围调整为从第 m - 2 个元素开始反转。
- 通过不断地将头结点向后移动,并调整范围,我们可以确保在链表中正确地定位到需要反转的范围,并对其进行处理。这样,无论 m 的值是多少,我们都能在链表中正确地找到需要反转的区间。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {if(left==1){return reverseN(head,right);}head.next=reverseBetween(head.next,left-1,right-1);return head;}ListNode succetor=null;public ListNode reverseN(ListNode head, int n){if(n==1){succetor=head.next;return head;}ListNode last=reverseN(head.next,n-1);head.next.next=head;head.next=succetor;return last;}
}
结果展示

相关文章:
备战蓝桥杯————递归反转单链表的一部分
递归反转单链表已经明白了,递归反转单链表的一部分你知道怎么做吗? 一、反转链表Ⅱ 题目描述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反…...
rabbitmq知识梳理
一.WorkQueues模型 Work queues,任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,…...
【数据结构与算法】动态规划法解题20240227
动态规划法 一、什么是动态规划二、动态规划的解题步骤三、509. 斐波那契数1、动规五部曲: 四、70. 爬楼梯1、动规五部曲: 五、746. 使用最小花费爬楼梯1、动规五部曲: 一、什么是动态规划 动态规划,英文:Dynamic Pro…...
备战蓝桥杯—— 双指针技巧巧答链表2
对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…...
半监督节点分类-graph learning
半监督节点分类相当于在一个图当中,用一部分节点的类别上已知的,有另外一部分节点的类别是未知的,目标是使用有标签的节点来推断没有标签的节点 注意 半监督节点分类属于直推式学习,直推式学习相当于出现新节点后,需要…...
软件文档-运维-开发-管理-资质-评审-招投标-验收
开发文档:这类文档主要用于记录软件的开发过程和细节,包括: 《功能要求》:描述了软件应具备的功能,是软件开发的基础。《投标方案》:向潜在的客户或招标方展示公司的技术和项目实施能力。《需求分析》&…...
猫头虎分享已解决Bug || Vue中的TypeError: Cannot read property ‘name‘ of undefined 错误
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...
技术应用:使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源
引言 在现代的软件开发中,许多应用程序需要同时访问多个数据库。例如,一个电子商务平台可能需要访问多个数据库来存储用户信息、产品信息和订单信息等。在这种情况下,使用多数据源是一种常见的解决方案,它允许我们在一个应用程序…...
C# Onnx 使用onnxruntime部署实时视频帧插值
目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx 使用onnxruntime部署实时视频帧插值 介绍 github地址:https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…...
编程笔记 Golang基础 016 数据类型:数字类型
编程笔记 Golang基础 016 数据类型:数字类型 1. 整数类型(Integer Types)a) 固定长度整数:b) 变长整数: 2. 浮点数类型(Floating-Point Types)3. 复数类型(Complex Number Types&…...
一周学会Django5 Python Web开发-会话管理(CookiesSession)
锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计26条视频,包括:2024版 Django5 Python we…...
QT之QString.arg输出固定位数
问题描述 我需要用QString输出一个固定位数的数字字符串。起初我的代码是这样: int img_num 1 auto new_name QString("%1.png").arg((int)img_num, 3, 10, 0); //最后一个参数用u0也是一样的 qDebug() << "new_name:" << new…...
Linux下各种压缩包的压缩与解压
tar 归档,不压缩,常见后缀 .tar # 将文件夹归档成为一个包 tar cf rootfs.tar rootfs # 将归档包还原为文件夹 tar xf rootfs.tar # 将归档包还原到路径 a/b/c tar xf rootfs.tar -C a/b/cgzip压缩, 常见后缀 .tar.gz .tgz # 压缩 tar czf …...
【ctfshow—web】——信息搜集篇1(web1~20详解)
ctfshow—web题解 web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20 web1 题目提示 开发注释未及时删除 那就找开发注释咯,可以用F12来查看,也可以CtrlU直接查看源代码呢 就拿到flag了 web2 题目提示 j…...
GEE入门篇|遥感专业术语(实践操作4):光谱分辨率(Spectral Resolution)
目录 光谱分辨率(Spectral Resolution) 1.MODIS 2.EO-1 光谱分辨率(Spectral Resolution) 光谱分辨率是指传感器进行测量的光谱带的数量和宽度。 您可以将光谱带的宽度视为每个波段的波长间隔,在多个波段测量辐射亮…...
c++中模板的注意事项
1. 模板定义时,<>中的虚拟类型参数不能为空。(因为我们使用模板就是希望使用模拟类型代替其它的类型,如果我们不定义就没有意义了) 2. 无论是定义函数模板还是类模板,其实template定义与后面使用虚拟类型的类或者函数,是…...
【代码随想录python笔记整理】第十三课 · 链表的基础操作 1
前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、链表 在之前的学习中,我们接触到了字符串和数组(列表)这两种结构,它们具有着以下的共同点:1、元素按照一定的顺序来排列。2、可以通过索引来访问数组中的元素和字符串中的字符。由此,…...
JAVA工程师面试专题-《Mysql》篇
目录 一、基础 1、mysql可以使用多少列创建索引? 2、mysql常用的存储引擎有哪些 3、MySQL 存储引擎,两者区别 4、mysql默认的隔离级别 5、数据库三范式 6、drop、delete 与 truncate 区别? 7、IN与EXISTS的区别 二、索引 1、索引及索…...
@ 代码随想录算法训练营第4周(C语言)|Day22(二叉树)
代码随想录算法训练营第4周(C语言)|Day22(二叉树) Day22、二叉树(包含题目 ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点 ) 235. 二叉搜索树的最近公…...
福特锐界2021plus 汽车保养手册
福特锐界2021plus汽车保养手册两页,零部件保养要求,电子版放这里方便查询:...
SecGPT-14B案例分享:某能源企业OT网络异常通信行为识别过程
SecGPT-14B案例分享:某能源企业OT网络异常通信行为识别过程 1. 引言:当能源网络遭遇“隐形”威胁 想象一下,一家大型能源企业的工业控制系统(OT网络)正在平稳运行,控制着发电、输电的关键设备。突然&…...
魔兽世界API开发助手:从新手到专家的全流程解决方案
魔兽世界API开发助手:从新手到专家的全流程解决方案 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 价值定位:如何避免90%的插件开发陷阱? 在魔…...
vLLM 5.0.4 实战:从参数解析到批量推理的性能调优指南
1. vLLM 5.0.4核心参数解析与实战配置 初次接触vLLM时,最让人头疼的就是那一长串参数列表。我在实际项目中使用Meta-Llama-3.1-8B-Instruct模型时,就曾因为参数配置不当导致显存爆炸。下面分享几个关键参数的实战经验: LLM类参数中的max_mode…...
COMSOL 探索岩石力学多场景:损伤、压裂、试验与模拟
COMSOL岩石损伤、水力压裂、三轴试验 岩石在膨胀剂的膨胀作用下的损伤; 相场法与水力压裂(6个模型); 不固结不排水三轴试验; 二维钻孔封孔效果模拟。在岩石力学领域,COMSOL 如同一个强大的实验室,让我们能够对复杂的岩…...
F3D动画播放教程:如何轻松展示和播放3D模型动画
F3D动画播放教程:如何轻松展示和播放3D模型动画 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d 想要快速查看和播放3D模型动画吗?F3D(Fast and minimalist 3D viewer&am…...
Rainmeter皮肤模板循环控制:break/continue实现终极指南
Rainmeter皮肤模板循环控制:break/continue实现终极指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,其皮肤模板…...
Open Images数据集完全指南:从零开始构建计算机视觉应用
Open Images数据集完全指南:从零开始构建计算机视觉应用 【免费下载链接】dataset The Open Images dataset 项目地址: https://gitcode.com/gh_mirrors/dat/dataset Open Images数据集是谷歌推出的一个大规模计算机视觉数据集,包含约900万张图像…...
MAC动态库加载路径优化:从@rpath到install_name_tool实战解析
1. 动态库加载路径问题的本质 当你第一次在Mac上遇到"Library not loaded"错误时,那种感觉就像在陌生城市迷了路。我清楚地记得自己早期开发时,控制台突然抛出红色错误信息的场景: dyld: Library not loaded: libAwesome.dylibRefe…...
利用快马平台快速构建免费节点测试工具原型,十分钟完成开发
今天想和大家分享一个快速验证免费节点可用性的小工具开发过程。作为一个经常需要测试代理节点的开发者,手动一个个验证实在太费时间,于是我用InsCode(快马)平台快速搭建了一个原型工具,整个过程比想象中简单很多。 需求分析 免费节点测试工具…...
HunyuanVideo-Foley音效生成:支持SMPTE时间码对齐视频关键帧
HunyuanVideo-Foley音效生成:支持SMPTE时间码对齐视频关键帧 1. 产品概述 HunyuanVideo-Foley是一款专为影视后期制作设计的AI音效生成工具,其核心创新在于支持SMPTE时间码精确对齐视频关键帧。这意味着音效师可以基于视频时间轴上的特定帧,…...
