《算法通关村第二关——指定区间反转问题解析》
《算法通关村第二关——指定区间反转问题解析》
题目描述
给你单链表的头指针head和两个整数left和right,其中left <= right 。 请你反转从位置left到位置right的链表节点,返回反转后的链表。
示例1:
输入: head = [1,2,3,4,5],left = 2, right = 4
输出: [1,4,3,2,5]
头插法
通过一个一个插入前面进行反转。

代码:
/*** 头插法指定区间反转* @param head* @param start就是题中的left* @param end 题中的right* @return*/
public static LinkedNode ReverseSpecificInterval1(LinkedNode head , int start,int end){// 设置dummyNode 是这类问题的一般解法LinkedNode dummyNode = new LinkedNode(-1);dummyNode.setNext(head);LinkedNode pre = dummyNode;for(int i = 0 ; i < start - 1 ; i++){pre = pre.getNext();}LinkedNode cur = pre.getNext();LinkedNode next = null;for(int i = 0 ;i < end-start ; i++){next = cur.getNext();cur.setNext(next.getNext());next.setNext(pre.getNext());pre.setNext(next);}return dummyNode.getNext();
}
穿针引线法
通过把指定区间提取出来,然后进行反转,最后再接回原链表的方法。

上代码:
/*** 穿针引线* @param head* @param start* @param end* @return*/public static LinkedNode ReverseSpecificInterval2(LinkedNode head,int start , int end){// 因为头节点可能发生变化,使用虚拟头节点可以便面复杂的分类讨论LinkedNode dummyNode = new LinkedNode(-1);dummyNode.setNext(head);LinkedNode pre = dummyNode;// 第一步,从虚拟头节点走start-1步,来到start节点的前一个结点。for ( int i = 0 ; i < start -1 ; i++){pre = pre.getNext();}// 第二步,从pre 再走end-start+1步来到end节点LinkedNode endNode = pre;for(int i = 0 ; i < end-start+1 ; i++){endNode = endNode.getNext();}// 第三步切出一个子链LinkedNode startNode = pre.getNext();LinkedNode succ = endNode.getNext();endNode.setNext(null);// 第四步反转链表reverseLinkedList(startNode);// 第五步,接回原来的链表pre.setNext(endNode);startNode.setNext(succ);return dummyNode.getNext();}private static void reverseLinkedList(LinkedNode startNode) {LinkedNode pre = null ;LinkedNode cur = startNode;while(cur != null){LinkedNode next = cur.getNext();cur.setNext(pre);pre = cur;cur = next;}}
近期在自学 Java 做项目,加入了一个编程学习圈子,里面有编程学习路线和原创的项目教程,感觉非常不错。还可以 1 对 1 和大厂嘉宾交流答疑,也希望能对大家有帮助,扫 ⬇️ 二维码即可加入。

也可以点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?
相关文章:
《算法通关村第二关——指定区间反转问题解析》
《算法通关村第二关——指定区间反转问题解析》 题目描述 给你单链表的头指针head和两个整数left和right,其中left < right 。 请你反转从位置left到位置right的链表节点,返回反转后的链表。 示例1: 输入: head [1,2,3,4,5…...
掌控安全Update.jsp SQL注入
0x01 漏洞介绍 亿赛通电子文档安全管理系统是国内最早基于文件过滤驱动技术的文档加解密产品之一,保护范围涵盖终端电脑(Windows、Mac、Linux系统平台)、智能终端(Android、IOS)及各类应用系统(OA、知识管理…...
C#将图片转换为ICON格式(程序运行图标)
介绍: C#创建窗体项目后左上角有显示图标,这个图标会在运行的时候显示在下面进程这里,但是必须是ico格式的图片才可以导入使用。以下是将图片打开后保存为ico格式代码。 代码如下: main函数测试 new 将图片转换成icon格式(&qu…...
ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍
文章目录 1. grok (正则捕获插件)1.1 作用1.2 正则表达式的类型1.2.1 内置正则表达式1.2.2 自定义正则表达式 2. mutate (数据修改插件)2.1 作用2.2 常见配置选项2.3 应用实例 3. multiline (多行合并插件)3.1 作用3.2 常用配置项及示例3.2.1…...
linux 防火墙介绍以及iptables的使用
背景介绍 在前几天,于工发现我们内部的150服务器7554端口被外网访问了。该应用提供着内部的摄像头资源。为了避免被入侵,于是我添加了一些iptables规则,防止外网的访问。 解决方式 解决方式有两种: 关闭公司公网路由器对150服务…...
原码、反码、补码在汇编中的应用
原文章:知乎 原码和二进制类似,不过它有符号位。正数符号位为0,负数为1 。 例:40000 0100 ,-41000 0100 原码是人脑最容易理解和计算的表示方式。 但是这在计算机中计算就出了问题,这两个(4…...
【红日靶场】vulnstack5-完整渗透过程
系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 【红日靶场】vulnstack4-完整渗透过程 文章目录 系列文章目录描述虚拟机密码红队思路 一、环境初始化二、开始渗透外网打点上线cs权限提升域信息…...
嵌入式平台的电源总结
本文引注: https://mp.weixin.qq.com/s/PuSxHDFbJjjHEReukLSvyg 1.AC的定义 Alternating Current(交流)的首字母缩写。AC是大小和极性(方向)随时间呈周期性变化的电流。电流极性在1秒内的变化次数被称为频率,以Hz为单位…...
@Binds methods must be abstract 报错指南
bindings方法必须是抽象的 Binds使用错误...
自定义反序列化类将LocalDate时间格式转为 LocalDateTime
从前端接收数据反序列化成类,如果时间格式不一致可能会反序列化失败 public class StorageDTO implements Serializable {private static final long serialVersionUID 1L;......//实体类中格式为JsonFormat(pattern "yyyy-MM-dd")JsonDeserialize(using CustomL…...
MySQL JSON_TABLE() 函数
JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。 应用:数据库字段以JSON 存储后,实际应用需要对其中一个字段进行查询 语法 JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name参数 json必需的。一个 …...
【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型
【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型 SKRR这是Gustau Camps-Valls等人在“用深度结构核回归检索物理参数”中提出的结构核岭回归(SKRR)方法。 参考文献: Camps-Valls,Retrieval of Physical Pa…...
Qt消息对话框的使用
本文介绍Qt消息对话框的使用。 QMessageBox类是Qt编程中常用到的一个类,主要用来进行一些简单的消息提示,比如:问题对话框,信息对话框等,这些对话框都属于QMessageBox类的静态方法,使用起来比较简单&#…...
spring的Ioc、DI以及Bean的理解
文章目录 什么是Ioc?Spring和这有什么关系Spring是怎么做的?如果service层对dao层有依赖该怎么办?什么叫做依赖注入Spring这样做的目的是什么参考文献 什么是Ioc? Ioc(Inversion of Control) 控制反转,就是使用对象时…...
倒计时 天时分秒
shijian() {const EndTIME new Date(开始时间变量); // 截止时间const NowTime new Date(); // 开始时间const usedTime EndTIME - NowTime; // 相差的毫秒数const days Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数const leavel usedTime % (24 * 3600 * 1…...
Spring篇---第六篇
系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…...
【unity小技巧】适用于任何 2d 游戏的钥匙门系统和buff系统——UnityEvent的使用
文章目录 每篇一句前言开启配置门的开启动画代码调用,控制开启门动画 新增CollisionDetector 脚本,使用UnityEvent ,控制钥匙和门的绑定多把钥匙控制多个门一把钥匙控制多个门 BUFF系统扩展参考源码完结 每篇一句 人总是害怕去追求自己最重要…...
爬虫ip如何加入到代码里实现自动化数据抓取
以下是一个使用HTTP:Tiny和www.weibo.com的音频爬虫程序的示例。这个示例使用了https://www.duoip.cn/get_proxy来获取爬虫IP。请注意,这个示例可能需要根据你的实际需求进行调整。 #!/usr/bin/perluse strict; use warnings; use HTTP::Tiny; use LWP::UserAgent; …...
在win10上安装配置Hadoop的环境变量
一、背景 在windows10系统中运行seatunnel 二、安装部署 2.1. 下载 Hadoop包 从 Apache Hadoop 官网下载最新版本的 Hadoop,版本号保持与服务端的Hadoop版本一致。 https://hadoop.apache.org/releases.htmlIndex of /apache/hadoop/core/hadoop-3.2.3/ 2.2. 解…...
MAX插件CG Magic怎么云渲染?操作方法已整起!
小编这里会收到不少网友的反馈是关于3ds max插件CG Magic怎么云渲染? 3d max的这款插件CG MAGIC的出现就是为了设计师使用过程中,可以省时又省心的完成工作。 同时,大家要了键下,现阶段CG MAGIC有18个板块,118个模块…...
python学习笔记(day3):文件操作与CSV文件处理
今天是学习python的第三天,和我一起来梳理一下今天学习的知识吧一、今日学习目录open()函数的使用read()、readline()、readlines()方法write()与writelines()方法绝对路径与相对路径CSV文件操作库的相关操作二、文件操作基础1. open()函数基本语法:f o…...
OpCore Simplify终极指南:3小时搭建稳定黑苹果系统的智能解决方案
OpCore Simplify终极指南:3小时搭建稳定黑苹果系统的智能解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配…...
51单片机HC-SR04超声波测距避坑指南:从时序图到LCD1602显示,新手常犯的3个错误
51单片机HC-SR04超声波测距避坑指南:从时序图到LCD1602显示,新手常犯的3个错误 刚接触51单片机的电子爱好者们,往往会被超声波测距项目吸引——它既不像LED闪烁那样简单,又不像物联网项目那样复杂,正好处于"有点挑…...
告别串口调试!手把手教你为TC264智能车项目添加IPS200屏幕菜单(附源码)
TC264智能车项目实战:IPS200屏幕多级菜单系统开发指南 在智能车竞赛和机器人开发中,实时调试参数是每个开发者都会遇到的挑战。想象一下比赛现场,当你的智能车因为PID参数不合适而出现抖动或跑偏时,传统的串口调试方式显得笨拙又低…...
像素史诗·智识终端一键部署MySQL:构建AI应用数据后台
像素史诗智识终端一键部署MySQL:构建AI应用数据后台 1. 前言:为什么需要MySQL数据库 在部署像素史诗智识终端这类AI应用时,数据存储是必不可少的一环。MySQL作为最流行的开源关系型数据库,能够稳定存储用户对话历史、向量数据等…...
Win11家庭版秒变专业版后,远程桌面到底怎么玩才安全?
Win11远程桌面安全指南:从基础加固到高级防护 深夜两点,你的手机突然弹出一条陌生IP尝试登录的警报——这不是电影情节,而是某位开发者因直接暴露3389端口遭遇的真实攻击。当Win11家庭版通过密钥升级获得专业版的远程桌面功能时,大…...
从‘打架’到‘严丝合缝’:CREO装配干涉检查与零件修改避坑指南(含全局干涉分析)
CREO装配设计中的干涉检查与高效修改实战指南 在机械设计领域,装配干涉问题就像一场无声的"交通事故"——当零件在虚拟环境中相互碰撞时,实际生产中将导致昂贵的返工成本。CREO作为主流的三维设计软件,其装配模块提供了强大的干涉检…...
VMvare 虚拟机 windowsServer2022 安装步骤,百度网盘安装包
百度网盘安装包 通过网盘分享的文件:SW_DVD9_Win_Server_STD_CORE_2022__64Bit_ChnSimp_DC_STD_MLF_X22-74289.ISO 链接: https://pan.baidu.com/s/1rgC7ygUQcbjRMPdcstglaQ?pwdt37x 提取码: t37x –来自百度网盘超级会员v6的分享 Vmvare 虚拟机 windowsServer2022…...
告别手动计算Token!巧用Python脚本自动生成OneNET MQTT连接密码(附源码)
告别手动计算Token!巧用Python脚本自动生成OneNET MQTT连接密码(附源码) 在物联网开发中,频繁调试设备与云平台连接是家常便饭。每次手动计算MQTT连接Token不仅耗时费力,还容易出错。想象一下,当你需要在凌…...
从海洋测绘到生鲜定价:拆解2023国赛B题C题背后的通用建模思维与MATLAB/Excel实战
从海洋测绘到生鲜定价:跨领域数学建模的通用思维框架与工具实战 当数学建模遇上现实问题,领域差异往往只是表象。去年全国大学生数学建模竞赛中,B题的多波束测深系统优化与C题的生鲜蔬菜定价策略看似毫无关联,实则共享着相同的问题…...
