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

链表的题,大部分都可以用指针或者递归可以做,指针如果做不出来的话,建议多声明几个指针就可以做的出来了
方法一:
因为链表中的头结点也有可能进行反转操作,所以我们为了不失一般性,创建一个虚拟头结点进行操作


我们需要旋转[left,right]区间内的链表结点,所以我们就必须要知道left的上一个结点是谁,所以我们可以使用快慢指针进行操作,slow慢指针指向我们left的上一个结点,对区间内的节点进行反转,过程如下:


源代码如下:
public ListNode reverseBetween(ListNode head, int left, int right) {//如果头结点为空或者是头结点的后继点为空的话直接返回headif(head==null||head.next==null){return head;}//创建一个虚拟头结点ListNode dummyHead=new ListNode(0);dummyHead.next=head;//设置两个指针ListNode slow=dummyHead;//慢指针-->指向left指针指向节点的上一个节点ListNode fast=dummyHead.next;//快指针 将left指针与right指针中的节点加到left指针前面(包括right指针)//进行移动,将slow指针移向left指针的前一个节点for (int i = 1; i <left; i++) {slow=slow.next;fast=fast.next;}//将left和right指针中的节点移向left节点前(包括right指针对应的节点)for (int i = 0; i <right-left; i++) {ListNode removeNode=fast.next;fast.next=fast.next.next;removeNode.next=slow.next;slow.next=removeNode;}//返回头结点后的链表长度return dummyHead.next;}
方法二:
在以前学习得到过程中我们已经学过了链表翻转(必会)
//这几行代码必须得会,链表题最多的就是翻转,你可以直接当一个api去用
public ListNode reverse(ListNode root){if(root==null||root.next==null){return root;}//前扑ListNode pre=null;ListNode cur=root;//后继ListNode next=null;while(cur!=null){next=cur.next;cur.next=pre;pre=cur;cur=next;}//返回的是翻转后的头结点return pre;}
现在我们只需要找到需要翻转链表区间的前扑后继,然后通过前扑的next指向翻转后的头结点,让反转后的尾结点指向后继,这道题就解出来了

源代码如下(这种方法比较推荐,比较容易理解):
public ListNode reverseBetween(ListNode head, int left, int right) {if(head==null||left>=right){return head;}//找到left的前驱节点,因为会设计头结点的操作,所以要创建一个虚拟头结点ListNode dummyNode=new ListNode(0,head);ListNode pre=dummyNode;//找到对应的前驱节点for (int i =1; i <left; i++) {pre=pre.next;}//未反转链表的头结点ListNode leftNode=pre.next;ListNode rightNode=leftNode;pre.next=null;//找到未反转链表的尾结点for (int i = 1; i <=right-left; i++) {rightNode=rightNode.next;}//找到后继ListNode end=rightNode.next;rightNode.next=null;ListNode newStartNode=reverse(leftNode);pre.next=newStartNode;leftNode.next=end;return dummyNode.next;}//反转链表public ListNode reverse(ListNode root){if(root==null||root.next==null){return root;}ListNode pre=null;ListNode cur=root;ListNode next=null;while(cur!=null){next=cur.next;cur.next=pre;pre=cur;cur=next;}return pre;}
相关文章:
面试热题(反转链表)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 链表的题,大部分都可以用指针或者递归可以做,指针如果做不出来的话,…...
竞赛项目 深度学习的水果识别 opencv python
文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习…...
Java项目部署云windows细节
springboot项目 pom文件中必须要有这个插件(正常其实都有就是我手贱以前不小心删除了) 他的作用是查找主类 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-…...
软件功能测试有什么注意事项?功能测试报告起到什么作用?
软件功能测试是软件开发过程中至关重要的一环,它用于评估软件功能的质量和稳定性,并确保软件能够按照预期进行工作。然而,在进行功能测试时,有一些注意事项需要特别关注,以确保测试的准确性和有效性。 一、软件功能测…...
Kubernetes 调度 约束
调度约束 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。 APIServer…...
Grafana技术文档-概念-《十分钟扫盲》
Grafana官网链接 Grafana: The open observability platform | Grafana Labs 基本概念 Grafana是一个开源的度量分析和可视化套件,常用于对大量数据进行实时分析和可视化。以下是Grafana的基本概念: 数据源(Data Source)&#…...
【JavaEE进阶】Spring 更简单的读取和存储对象
文章目录 一. 存储Bean对象1. 配置扫描路径2. 添加注解存储 Bean 对象2.1 使用五大类注解存储Bean2.2 为什么要有五大类注解?2.3 有关获取Bean参数的命名规则 3. 使用方法注解储存 Bean 对象3.1 方法注解储存对象的用法3.2 Bean的重命名3.3 同⼀类型多个 Bean 报错 …...
KafKa集群搭建和知识点
一、KafKa概述 1.1 定义 KafKa是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据试试处理领域 是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统&a…...
剑指 Offer 56 - I. 数组中数字出现的次数题解
题目描述:剑指 Offer 56 - I. 数组中数字出现的次数 - 力扣(LeetCode) 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示…...
CSDN付费专栏写作协议
一、总则 1.1、欢迎您选用CSDN付费专栏服务(“本服务”)。以下所述条款和条件即构成您与CSDN就使用本服务所达成的协议(“本协议)。本协议被视为《CSDN用户服务条款》(链接:https://passport.csdn.net/ser…...
[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现
描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述ÿ…...
vue3多条件搜索功能
搜索功能在后台管理页面中非常常见,本篇就着重讲一下vue3-admin-element框架中如何实现一个顶部多条件搜索功能 一、首先需要在vue页面的<template></template>中写入对应的结构 <!-- 搜索 --><div style"display: flex; justify-content…...
C++20协程
目录 协程原理: 进程、线程和协程的区别和联系编辑 协程在IO多路复用中 协程的目的: 协程的优势: 协程原理: (学习来源:幼麟实验室) 线程是进程中的执行体,拥有一个…...
Zabbix 6.0 监控其他
文章目录 一、Zabbix 监控 Windows 系统1)下载 Windows 客户端 Zabbix agent 22)安装客户端,配置3)在服务端 Web 页面添加主机,关联模板 二、Zabbix 监控 java 应用1)客户端开启 java jmxremote 远程监控功…...
Django rest_framework Serializer中的create、Views中的create/perform_create的区别
Django rest_framework Serializer中的create、Views中的create/perform_create的区别 对于后端来说,前后端分离的方式能让前后端的开发都爽。和所有的爽一样,每爽一次都要付出一定的代价。而前后端分离的代价,就是后端要面对巨量的模块化的功…...
差异性分析傻瓜版
path1输入你的第一个Excel path2输入你的第二个Excel DEG.dig <- function(path1,path2) { require(xlsx) require(tidyverse) require(limma) require(edgeR) E<- read.xlsx (path1,sheetIndex 1,header 1) %>% column_to_rownames(var &…...
Keystone Automotive EDI 需求分析
Keystone Automotive 是一家知名的汽车零部件销售卖场,自创立以来,在汽车行业取得了卓越的成就。作为一家专业的汽车零部件供应商,Keystone Automotive 致力于为客户提供优质的产品和卓越的服务。公司的经营范围涵盖广泛,涉及多个…...
jmeter创建一个压测项目
1.jemeter新建一个项目: 2.接下来对Thread进行描述,也可以先使用默认的Thread进行操作。 3.添加http请求头的信息。按照如图所示操作 4.在请求头里面添加必要的字段,可以只填必要字段就可以 5.添加Http请求信息,如下图ÿ…...
CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数
一、淘金优化算法GRO 淘金优化算法(Gold rush optimizer,GRO)由Kamran Zolf于2023年提出,其灵感来自淘金热,模拟淘金者进行黄金勘探行为。淘金优化算法(Gold rush optimizer,GRO)提…...
AI Deep Reinforcement Learning Autonomous Driving(深度强化学习自动驾驶)
AI Deep Reinforcement Learning Autonomous Driving(深度强化学习自动驾驶) 背景介绍研究背景研究目的及意义项目设计内容算法介绍马尔可夫链及马尔可夫决策过程强化学习神经网络 仿真平台OpenAI gymTorcs配置GTA5 参数选择行动空间奖励函数 环境及软件…...
Python全景与哲学:为何选择Python
# 001、Python全景与哲学:为何选择Python?昨天深夜调试一个嵌入式C项目,指针越界导致内存写穿,硬是熬到三点才靠逻辑分析仪抓到异常。关机时突然想到:同样的功能如果用Python写,可能晚饭前就收工了。这个反…...
Golang怎么实现SSE服务端推送事件_Golang如何用Server-Sent Events实时推送数据【教程】
Go 的 http.ResponseWriter 能多次写入,但需禁用缓冲、手动刷新并防止中间件断连;SSE 需设正确 header、定时心跳、严格格式输出、绕过干扰中间件,并配置反向代理。Go 的 http.ResponseWriter 为什么不能直接写多次?因为 SSE 要求…...
GoAlert高级功能:数据库切换、加密和实验特性详解
GoAlert高级功能:数据库切换、加密和实验特性详解 【免费下载链接】goalert Open source on-call scheduling, automated escalations, and notifications so you never miss a critical alert 项目地址: https://gitcode.com/gh_mirrors/go/goalert GoAlert…...
Qwen3.5-9B惊艳效果:上传Excel截图→识别表格→生成SQL查询语句演示
Qwen3.5-9B惊艳效果:上传Excel截图→识别表格→生成SQL查询语句演示 1. 开篇:认识Qwen3.5-9B的强大能力 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,它在多个领域展现出惊人的能力。这个模型最吸引人的特点是它不仅能处理文字ÿ…...
图解目标检测算法之CenterNet
🌞欢迎来到图解深度学习的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 📆首发时间:🌹2026年3月20日🌹 ✉️希望可以和大家一起完成…...
GPEN完整操作流程:从HTTP链接访问到结果保存
GPEN完整操作流程:从HTTP链接访问到结果保存 1. 引言:你的数字美容刀 你有没有翻出过一张老照片,里面的人脸模糊得只剩下轮廓?或者,用AI生成了一张很棒的图,偏偏人脸部分崩坏了?又或者&#x…...
伏羲模型在能源行业的应用:风电与光伏发电功率预测实战
伏羲模型在能源行业的应用:风电与光伏发电功率预测实战 最近和一位在电网调度中心工作的朋友聊天,他提到一个挺头疼的问题:风电和光伏发电“看天吃饭”的特性,给电网的稳定运行带来了不小的挑战。今天风大太阳好,发电…...
OpenClaw+Phi-3-mini-128k-instruct内容处理:从爬虫到发布的自动化流水线
OpenClawPhi-3-mini-128k-instruct内容处理:从爬虫到发布的自动化流水线 1. 为什么需要内容处理自动化 作为一个技术博主,我每天需要处理大量信息:从技术社区抓取最新动态、整理成可读性强的文章、再发布到多个平台。这个过程耗时费力&…...
Wan2.2-I2V-A14B应用场景:AI辅助无障碍——为视障用户提供动态场景语音描述视频
Wan2.2-I2V-A14B应用场景:AI辅助无障碍——为视障用户提供动态场景语音描述视频 1. 场景痛点与解决方案 1.1 视障用户面临的挑战 视觉信息缺失:无法感知动态视频内容,错过大量信息传统方案局限:人工语音描述成本高、实时性差、…...
使用Dify对接自己开发的mcp
先要有自己开发的mcp,然后部署到服务器 如何开发自己的mcp:Java使用spring Ai集成的mcp开发自己的mcp-CSDN博客 使用Dify对接mcp服务 Dify如何接入MCP工具_dify如何使用mcp工具-CSDN博客 基本上都差不多, 只说一点:如果一直报…...
