牛客题-链表内区间反转

链表内区间反转
在这里插入图片描述
这是代码

typedef struct ListNode listnode;
struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {if (head == NULL) {return NULL;}listnode* findhead = head;listnode* findtail = head;listnode* prev = NULL;int count1 = m;int count2 = n;for (int i = 1; i < count1; i++) {prev = findhead;findhead = findhead->next;}for (int j = 1; j < count2; j++) {findtail = findtail->next;}listnode* p1 = findhead;listnode* p2 = p1->next;listnode* p3 = p2->next;while (p1 != findtail) {p2->next = p1;p1 = p2;p2 = p3;if (p3) {p3 = p3->next;}}if (prev) {prev->next = p1; } else {head = p1; }findhead->next = p2; return head;
}

这道题我们的思路是先找到要反转的区间的范围,在通过改变链表指针的指向来反转链表,在把反转链表的头节点和尾节点与原链表相连,我们来画图看看
在这里插入图片描述
我们这里通过两个for循环来找到了区间,找m的时候需要存储上一个节点,因为我们要反转完链表之后,需要把新反转的链表链接到原链表上所以要创建一个prev变量来存放上一个节点。接下来就是反转链表了,p1就是反转链表的头节点我们要用一个while循环来控制p1当p1不等于要反转的区间的尾节点,这里个反转链表的思路是重点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来就是链接链表了,这时候我们反转完的头节点应该是p1我们就把我们存放的prev节点的下一个节点->p1
在这里插入图片描述

然后把我们原来的头节点2的下一个节点指向p2.
在这里插入图片描述
这样我们就完成反转了,

if (prev) {prev->next = p1; } else {head = p1; }

这段代码就是判断特殊情况的,当prev为空的时候,就证明这个反转区间就是从链表头开始的,链表头节点就是反转链表的开始。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一对一WebRTC视频通话系列(四)——offer、answer、candidate信令实现

本篇博客主要讲解offer、answer、candidate信令实现&#xff0c;涵盖了媒体协商和网络协商相关实现。 本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 一对一WebRTC视频通话系列往期博客 一…

【小浩算法 BST与其验证】

BST与其验证 前言我的思路思路一 中序遍历判断数组无重复递增思路二 递归边界最大值最小值的传递 我的代码测试用例1测试用例2 前言 BST是二叉树一个经典应用&#xff0c;我们常常将其用于数据的查找以及构建平衡二叉树等。今天我所做的题目是验证一颗二叉树是否为二叉搜索树&…

TinyEngine 低代码引擎区块局域网部署方案全新上线!

本文由体验技术团队 TinyEngine 项目组成员创作~ 在 TinyEngine 开源后&#xff0c;对私有化部署存在诉求的用户越来越多&#xff0c;而当前 TinyEngine 多项内容都依托在公网中&#xff0c;当前官网提供的区块发布方案&#xff0c;为公网环境下的发布&#xff0c;不能完全满足…

什么是驱动数字签名?如何获取驱动数字签名?

Windows 驱动程序承载着计算机实现的各种内核和用户模式功能。如果驱动程序被黑客攻击&#xff0c;可能会产生很多问题。Windows通过数字签名来验证驱动程序包的完整性及发布者的身份。2020年10月的安全更新中&#xff0c;微软加强了对驱动软件的验证&#xff0c;如果Windows无…

文件IO-使用dup2实现错误日志功能及判断文件权限,并终端输出

1&#xff1a;使用 dup2 实现错误日志功能 使用 write 和 read 实现文件的拷贝功能&#xff0c;注意&#xff0c;代码中所有函数后面&#xff0c;紧跟perror输出错误信息&#xff0c;要求这些错误信息重定向到错误日志 err.txt 中去 代码&#xff1a; #incl…

去除图片水印软件-inpaint

一、普通使用教程 亲眼看看使用 Inpaint 从照片中删除不需要的元素是多么容易&#xff1a; 1.1加载图片 1.2 选择要纠正的问题区域 1.3 告别不需要的对象并保存 二、功能 1 修复旧照片 老并不总是意味着坏。我们拥有的一些旧照片对我们来说仍然很重要&#xff0c;因为它们仍…

mybatis:Spring junit 测试报错:Failed to load ApplicationContext

Spring junit 测试报错&#xff1a;Failed to load ApplicationContext 解决方法&#xff0c;修改mybatis版本&#xff0c;版本过高导致无法加载依赖

电脑屏幕监控软件有哪些?8款受欢迎的电脑屏幕监控软件

电脑屏幕监控软件有哪些&#xff1f;8款受欢迎的电脑屏幕监控软件 市场上有很多监控软件&#xff0c;因为太多&#xff0c;很多老板不知道怎么选&#xff0c;今天小编从它们各自的特点、优势、未来发展趋势几方面&#xff0c;介绍8款受欢迎的电脑屏幕监控软件。 第一是&#x…

xhs 旋转滑块流程分析

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 前言 本文首发于公众号…

网络知识点之—QoS

QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;指一个网络能够利用各种基础技术&#xff0c;为指定的网络通信提供更好的服务能力&#xff0c;是网络的一种安全机制&#xff0c; 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来…

算法系列--多源BFS问题

&#x1f495;"对相爱的人来说&#xff0c;对方的心意&#xff0c;才是最好的房子。"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–多源BFS问题 大家好,今天为大家带来的是算法系列--多源BFS问题 前言: 之前我们已经学习过单源的最短路问…

论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition

motivation :现有方法方法无法准确定位身体部位&#xff0c;不同的身体部位可以出现在同一个条纹(如手臂和躯干)&#xff0c;一个部分可以出现在不同帧(如手)的不同条纹上。其次&#xff0c;不同的身体部位具有不同的尺度&#xff0c;即使是不同帧中的同一部分也可以出现在不同…