后端开发刷题 | 链表内指定区间反转【链表篇】

news2024/11/17 19:44:31

描述

将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。
例如:
给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→NULL, m=2,n=4
返回 1→4→3→2→5→NULL

数据范围: 链表长度 0<size≤10000,0<m≤n≤size,链表中每个节点的值满足 ∣val∣≤1000

要求:时间复杂度 O(n) ,空间复杂度 O(n)

进阶:时间复杂度 O(n),空间复杂度 O(1)

示例1

输入:

{1,2,3,4,5},2,4

返回值:

{1,4,3,2,5}

示例2

输入:

{5},1,1

返回值:

{5}

思路分析:

这里是反转对应区间,所以可以一个一个进行反转,比如示例1里面,反转2到4这个区间,

可以先将其变成1->3->2->4->5,然后再变成1->4->3->2->5

演变过程:

代码:

import java.util.*;


public class Solution {
    /**
     *
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        ListNode dum=new ListNode(0);
        dum.next=head;
        ListNode pre=dum;
        for(int i=1;i<m;i++){
            pre=pre.next;// 找到m的上一个节点
        }
        head=pre.next;// 从m的位置开始进行交换
        ListNode next;// 用于暂存遍历节点的后继节点
        for(int i=m;i<n;i++){
             // 暂存遍历节点的下一个节点
            next=head.next;
            // 让当前节点指向 后继节点的后继节点
            head.next=next.next;
            // 让后继节点指向反转元素的首位
            next.next=pre.next;
            // 让m的上一个节点 指向 此后继节点
            pre.next=next;
        }
        return dum.next;
        
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】【系统纪元】Linux基础指令

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C游记》《进击的C》《Linux迷航》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、文件管理1.1 ls1.2 pwd1.3 cd1.4 mkdir1.5 touch1.6 rm1.7 cp1.8 mv 二、文件输出2.1 echo2.2 cat2.3 less…

新学期新动力,以骨传导耳机开启健康音乐之旅

大学生快开学啦&#xff01;激励自己在学期的状态给自己准备一个礼物应该不过分吧&#xff0c;相信没有大学生能够没有耳机&#xff01;不管是在赶早八的路上也要放收歌来醒醒神&#xff0c;还是日常散步不那么单调&#xff0c;使用频率都很高&#xff0c;但是入耳式的蓝牙耳机…

Stable Diffusion 提示词插件:开启个性化艺术创作大门,探索AI绘画新境界。让灵感枯竭再无可能!

前言 之前的文章介绍了提示词的基础用法和进阶用法&#xff0c;东西很多很复杂&#xff0c;那么非程序员相关行业的人员&#xff0c;对字符不敏感怎么办&#xff1f; 没关系&#xff0c;今天我来介绍几款提示词插件&#xff0c;可以大大提升 Stable Diffusion 的使用效率。 …

微信怎么恢复聊天记录?轻松4招,恢复消失的聊天记录

微信聊天记录不仅是日常沟通的桥梁&#xff0c;更是珍贵记忆的储存库。然而&#xff0c;误删、系统故障或设备更换等意外情况&#xff0c;时常让我们的聊天记录瞬间消失&#xff0c;给我们留下遗憾。面对这一挑战&#xff0c;微信怎么恢复聊天记录成为许多人的迫切需求。幸运的…

opensuse leap15安装配置

opensuse leap15安装配置 查看opensuse leap15安装完成后的基本配置关闭SELinux禁用AppArmor 关闭firewalld防火墙关闭polki服务&#xff08;非必须&#xff09;tuned服务安装必备软件 查看opensuse leap15安装完成后的基本配置 默认开启了防火墙默认开启了Linux安全模块 关闭…

day34 代码随想录 | 不同路径 整数拆分

不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。问总共有多少条不同的路径&#xff1f…

第37讲:Cephfs文件系统的正确使用姿势

文章目录 1.Cephfs文件系统简介2.Cephfs文件系统细节介绍2.1.Cephfs文件系统多客户端隔离挂载2.2.Ceph集群中多个Cephfs如何单独使用 3.挂载多个Cephfs文件系统4.Cephfs文件系统多客户端隔离挂载实战4.1.创建一个Cephfs文件系统4.2.将Cephfs文件系统挂载到本地路径4.3.在Cephfs…

JavaWeb - 认识web开发

JavaWeb Java和JavaWeb是两个不同的概念&#xff0c;它们在范围和应用上有所区别&#xff1a; Java&#xff1a; 定义&#xff1a;Java是一种面向对象的编程语言&#xff0c;由Sun Microsystems公司&#xff08;现已被Oracle收购&#xff09;于1995年推出。应用范围&#xff1…

易企秀场景秀源码系统全新升级,方便制作各种Html5应用的制作工具 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化的时代&#xff0c;Html5 应用已经成为了展示和传播信息的重要方式。而在众多的制作工具中&#xff0c;易企秀场景秀源码系统以其全新升级的功能和便捷性&#xff0c;吸引了众多用户的目光。它不仅为用户提供了方便制作各种 Html5 应用的工具&#xff0c…

亚马逊测评自养号:揭秘高效环境搭建的秘诀

亚马逊测评自养号环境搭建的技术要点主要涵盖了网络环境、IP管理、设备配置、浏览器防关联、支付卡选择与管理以及账号管理等多个方面。以下是对这些技术要点的详细解析&#xff1a; 1. 网络环境 使用国外服务器&#xff1a;在云端搭建安全终端&#xff0c;确保能够阻断硬件参…

【python基础】—离线环境下,在linux中安装python包(以sqlalchemy为例)

文章目录 第一步&#xff1a;在线环境下载离线安装包及依赖包。第二步&#xff1a;把包上传到离线环境的服务器上&#xff0c;进行安装。第三步&#xff1a;测试是否安装成功。常见报错之版本选择问题 第一步&#xff1a;在线环境下载离线安装包及依赖包。 下载第三方库官网&am…

基于django的影音播放网站 /基于python的影视网站/影视播放系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

在Vue工程中开发页面时,发现页面垂直方向出现两个滚动条的处理

在Vue工程中开发页面时&#xff0c;发现页面垂直方向出现两个滚动条 最近在开发页面时&#xff0c;发现页面多了两个滚动条&#xff0c;如图&#xff1a; 原因&#xff1a; 当一个页面的内容高度大于屏幕的高度时就会出现滚动条。一般情况下当一个页面高度大于屏幕高度时&a…

Yolov8 人脸关键点检测

原文&#xff1a;Yolov8 人脸关键点检测 - 知乎 (zhihu.com) 基于yolov8的人脸检测&#xff0c;带关键点检测。主要基于yolov8 姿态估计进行修改&#xff1a; Ctrl CV&#xff1a;Yolov8 姿态估计20 赞同 39 评论文章 人脸关键点有5个点&#xff0c;分别为左右两个嘴角&…

XSS总结知识点+例题实操

目录 XSS总结知识点 1、XSS也是属于注入攻击的一类&#xff0c;他是通过构造一个JS代码&#xff0c;注入到网页中&#xff0c;由用户的浏览器来请求源码且运行达到攻击的效果&#xff1b; 2、XSS的危害 3、XSS产生的原因 4、反射性XSS 5、存储型XSS 6、DOM的XSS 7、XSS…

C++第三十八弹---一万六千字使用红黑树封装set和map

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、set/map基本结构 2、红黑树基本结构改造 3、红黑树的迭代器 4、set的模拟实现 5、map的模拟实现 6、完整代码 1、set/map基本结构 在封装…

三元组损失Triplet loss 详解

深度神经网络在识别模式和进行预测方面表现出色,但在涉及图像识别任务时,它们常常难以区分相似个体的图像。三元组损失是一种强大的训练技术,可以解决这个问题,它通过学习相似度度量,在高维空间中将相似图像准确地嵌入到彼此接近的位置。 在这篇文章中,我们将以简单的技术术语解…

程序员为什么要一直写bug ,不能一次性写好吗?

文章目录 一、前言二、为什么要写bug1、程序员的疑问&#xff1f;2、bug产生的原因3、减少bug的措施4、程序员不是机器 三、写代码的好习惯&#xff0c;减少80%的bug1、修改完代码&#xff0c;记得自测一下2、方法入参尽量都检验3、修改老接口的时候&#xff0c;思考接口的兼容…

SpringBoot3核心特性-快速入门

目录 传送门前言一、简介1、前置知识2、 环境要求3、SpringBoot是什么 二、快速体验1、开发流程2、特性小结3、Spring Initializr 创建向导 三、应用分析1、依赖管理机制2、自动配置机制2.1、初步理解2.2、完整流程2.3、如何学好SpringBoot 四、核心技能1、常用注解1.1、组件注…

Spring Boot的自动装配机制?(Spring Boot怎么完成自动装配的?)----面试常问

Spring Boot的自动装配机制&#xff1f;(Spring Boot怎么完成自动装配的?) 目录 一、概念版&#xff08;重要&#xff09; 二、实操版 1. 依赖管理 (pom.xml导坐标) 2. 自动配置类 2.1 SpringBootApplication 注解 2.2 EnableAutoConfiguration 2.3 Import({AutoCon…