蓝桥杯入门即劝退(十)反转链表

news2025/8/6 1:55:48

----------持续更新蓝桥杯入门系列算法实例------------

如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流!

你的点赞、关注、评论、是我创作的动力!

-------希望我的文章对你有所帮助--------

前言:如果有一定链表基础,来学习本篇文章的实例将更好理解哦!

一、反转链表 I

题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

解题思路:1、本题的目标很明确,就是对整个链表进行反转,通过对于链表元素进行操作,而不是改变其Value!

2、本题较为容易理解的就是使用双指针法,即创建一个pre指针,且赋值为null,一个cur指针,表示指向当前元素。

3、首先,将cur指针初始化指向head头指针,其次再创建一个next节点,赋值为cur.next

4、其实这个next节点表示的是指向head指针的下一个元素!

5、再将cur.next指针指向pre,即改变了head的指针方向(抽象上)

6、再次,将cru赋值给pre,即完成了一次反转,最后再使得cur赋值给next,开始下一次反转

7、最后返回pre,即完成全部反转!

8、动图演示:

(图中pre为本题中的cur,原理其实一样)

 

代码实现

public static ListNode reverseList(ListNode head) {
     ListNode pre=null;
     ListNode cru=head;
     while (cru!=null){
         ListNode next=cru.next;
         cru.next=pre;
         pre=cru;
         cru=next;
     }
     return pre;
    }

二、反转链表II

题目描述

给你单链表的头指针 head 和两个整数 leftright ,其中 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]

解题思路:1、本题是上一题的升级版,如果学会第一题,那么第二题则是会更加的得心应手

2、本题是对于部分的链表元素的反转,难度加大

3、需要确定反转链表的位置,即left和right

4、首先创建一个虚拟头节点,赋值为-1,因为head可能是变化的,并且指向head。

5、将头节点赋值给pre,并且开始遍历链表直到 left-1的位置,并且记录给RightNode节点

6、再次移动RightNode,到right+1 的位置,并且记录当前指针位置

7、开始切割,即将left到right这段链表的前一个next指针和后一个next指针置空!

8、再通过相同的方式,如第一题般反转链表

9、将反转的链表拼装回去,即可得到局部反转的链表,最后返回虚拟节点的下一个节点(head)

请问你学废了吗?

代码实现

 public ListNode reverseBetween(ListNode head, int left, int right) {
        ListNode D_Node=new ListNode(-1);//虚拟节点
        D_Node.next=head;
        ListNode pre=D_Node;
        for(int i=0;i<left-1;i++){//移到left前一个next指针
            pre=pre.next;
        }
        ListNode RigthNode=pre;//记录当前位置继续遍历
        for (int i=0;i<right-left+1;i++){
            RigthNode=RigthNode.next;
        }
        ListNode LeftNode=pre.next;//链表左端
        ListNode cur=RigthNode.next;//链表右端
        pre.next=null;//切割
        RigthNode.next=null;
        ReverseList(LeftNode);//反转

        pre.next=RigthNode;//拼接
        LeftNode.next=cur;

        return D_Node.next;

    }
    public  static ListNode ReverseList(ListNode head1){
        ListNode pre=null;
        ListNode cru=head1;
        while (cru!=null){
            ListNode next=cru.next;
            cru.next=pre;
            pre=cru;
            cru=next;
        }
        return pre;
    }

感谢爱学习的你看到了最后,点个关注、赞支持一下吧!

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

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

相关文章

【图像处理】基于形状提取和模式匹配组合的面部特征点提取方法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

7天酒店斩获五洲钻石奖“年度投资价值酒店连锁品牌” 打造酒店投资极致性价比

近日&#xff0c;“2022文旅国际峰会暨第十五届世界酒店论坛”在海南隆重召开&#xff0c;300多位来自中外的业界精英和跨界企业家代表等受邀参加&#xff0c;齐聚行业盛会。同期&#xff0c;“第十四届五洲钻石奖”也正式揭晓&#xff0c;7天酒店在众多品牌中脱颖而出&#xf…

【原创】使用Golang的电商搜索技术架构实现

作者&#xff1a;黑夜路人 时间&#xff1a;2022年11月 一、背景&#xff1a; 现在搜索技术已经是非常主流的应用技术&#xff0c;各种优秀的索引开源软件已经很普遍了&#xff0c;比如 Lucene/Solr/Elasticsearch 等等主流搜索索引开源软件&#xff0c;让我们搭建一个优秀的…

项目管理如何有效进行?看这篇就够了

先放上一个项目管理流程图&#xff0c;纯手打&#xff0c;图有点长。 ​ 上面的流程图其实就已经清楚概括了项目管理的流程框架&#xff0c;按照这个逻辑去推进&#xff0c;一般来说就可以达到标准化的要求了。 将以上流程细化成具体的项目管理场景&#xff0c;大致可以分为7大…

【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day08

大家好&#xff0c;我是陶然同学&#xff0c;软件工程大三明年实习。认识我的朋友们知道&#xff0c;我是科班出身&#xff0c;学的还行&#xff0c;但是对面试掌握不够&#xff0c;所以我将用这100多天更新Java面试题&#x1f643;&#x1f643;。 不敢苟同&#xff0c;相信大…

6种MySQL数据库平滑扩容方案剖析

1. 扩容方案剖析 1.1 扩容问题 在项目初期&#xff0c;我们部署了三个数据库A、B、C&#xff0c;此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配&#xff0c;我们在Service服务层使用uid%3进行取模分片&#xff0c;从而将数据平均分配到三个数据库中。 如…

网络丢包,网络延迟?这款神器帮你搞定所有!

常用的 ping&#xff0c;tracert&#xff0c;nslookup 一般用来判断主机的网络连通性&#xff0c;其实 Linux 下有一个更好用的网络联通性判断工具&#xff0c;它可以结合ping nslookup traceroute 来判断网络的相关特性&#xff0c;这个命令就是 mtr。 mtr 全称 my tracerout…

2022年“移动云杯”算力网络应用创新大赛圆满落幕,百万大奖揭晓!

11 月 17-18 日&#xff0c;2022 年移动云开发者技术论坛暨“移动云杯”算力网络应用创新大赛总决赛在苏州举行。活动现场公布了 2022 年“移动云杯”算力网络应用创新大赛总决赛获奖名单。同时重磅发布了移动云 openAPI 2.0、首届移动云量子计算大赛。 三大赛道齐发力&#xf…

2022ICPC 网络赛第二场 E An Interesting Sequence

You should generate a sequence of positive integers of length n. Of course,this sequence needs to meet some requirements. ∀ i∈[1,n] ai​>1 ∀ i∈[2,n] gcd(ai−1​,ai​)1 a1​k(k>1) gcd(x,y) means the greatest common divisor of x and y. You n…

启明智显分享|4.3寸智能串口屏应用于充电桩

据数据显示&#xff0c;全球新能源汽车销量正大幅度增长&#xff0c;全球汽车电动化渗透率也由0.8%增长到7.74%&#xff0c;这不仅意味着汽车产业电动化浪潮的来临&#xff0c;也证实了我国新能源汽车行业正处于高速发展状态。随着电动汽车销售量与保有量的迅速增长&#xff0c…

linux线程互斥

文章目录多线程执行的问题Linux线程互斥要解决以上问题&#xff0c;需要做到三点&#xff1a;多线程执行的问题 先看一段代码 int tickets10000;void* buytickets(void* args) {char* name (char*)args;while(1){if(tickets>0){cout<<name<<"] tickets:…

m基于数字锁相环DPLL的分频器simulink仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 随着数字电路技术的发展&#xff0c;数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体…

C++11 互斥锁

目录 互斥锁 2.1 独占互斥量std::mutex std::mutex使用Demo 2.2 递归互斥量std::recursive_mutex 死锁demo 使用std::recursive_mutex递归锁 2.3 带超时的互斥量 std::timed_mutexDemo 2.4 lock_guard和unique_lock的使用和区别 unique_lock,lock_guard的使用 unique…

【数据结构】栈和队列OJ练习

文章目录1. 栈1.1 栈的概念及其结构1.2 栈的实现Stack.hStack.cTest.c2. 队列2.1 队列的概念及其结构2.2 队列的实现Queue.hQueue.cTest.c3. 栈和队列面试题3.1 括号匹配问题3.2 用队列实现栈3.3 用栈实现队列3.4 设计循环队列1. 栈 1.1 栈的概念及其结构 &#x1f436; 栈的…

《深度学习进阶 自然语言处理》第六章:LSTM介绍

文章目录6.1 RNN的问题6.1.1 RNN的复习6.1.2 梯度消失和梯度爆炸6.1.4 梯度爆炸的对策6.2 梯度消失和LSTM6.2.1 LSTM的接口6.2.2 LSTM层的结构6.2.3 输出门6.2.4 遗忘门6.2.5 新的记忆单元6.2.6 输入门6.2.7 LSTM的梯度的流动6.3 使用LSTM的语言模型6.3.1 LSTM层的多层化6.3.2 …

乐华娱乐欲重返上市:毛利率走低,上半年利润下滑,韩庚为股东

撰稿|汤汤 来源|贝多财经 宣布暂缓香港IPO计划不到3个月&#xff0c;乐华娱乐&#xff08;HK:02306&#xff09;欲再度回归。 11月17日&#xff0c;港交所披露的信息显示&#xff0c;乐华娱乐集团&#xff08;YH Entertainment Group&#xff0c;简称“乐华娱乐”&#xff0…

谈谈主数据管理的概念、原则、标准和指南

1主数据的定义和关键概念 1.1什么是主数据 主数据是不同业务领域的公共信息,并在多个业务流程中使用。主数据通常描述参与事务或事件的事物。示例包括有关课程、学生或雇员的信息。 参考数据通常用于对其他数据(如状态代码)进行分类,或与组织边界以外的信息(如国家列表)相…

ctfhub -afr -1 2 3

afr-1 打开题目链接 默认的传参数据为 ?phello 更改一下试试看 ?p111 无回显 ?pflag 回显了 no no no 想到了 php任意文件读取 ?pphp://filter/readconvert.base64-encode/resourceflag 回显出数据 应该是base64 拿去解码 得到flag afr-2 打开题目链接 查看源代码…

【第一阶段:java基础】第8章:面向对象编程高级-1(P333-P393)static、main、代码块、单例设计模式

本系列博客是韩顺平老师java基础课的课程笔记&#xff0c;B站&#xff1a;课程链接&#xff0c;吐血推荐的一套全网最细java教程&#xff0c;获益匪浅&#xff01; 韩顺平P333-P393类变量和类方法类变量/静态变量类方法/静态方法理解main方法语法代码块注意事项好处细节单例设计…

Java接口

什么是接口&#xff1f; 在Java中&#xff0c;接口可以看成是多个类的公共规范&#xff0c;是一种引用数据类型。 使用关键字interface来定义接口 interface IRunning {void run(); }在创建接口时&#xff0c;接口的命名一般以大写字母I开头&#xff0c;接口的命名一般使用形…