C语言 | Leetcode C语言题解之第25题K个一组翻转链表

题目:

题解:

/* 定义保存两个地址的结构体* 用来保存反转后结果的头节点和尾节点*/
typedef struct {struct ListNode* head; struct ListNode* tail; 
} TwoAddress;
// 反转中间链表
TwoAddress* reverse(struct ListNode* head){struct ListNode* prev = NULL;struct ListNode* curr = head;TwoAddress* ans = (TwoAddress*)malloc(sizeof(TwoAddress));ans->tail = head;while(curr){struct ListNode* temp = curr->next;curr->next = prev;prev = curr;curr = temp;}ans->head = prev;return ans;
}
struct ListNode* reverseKGroup(struct ListNode* head, int k) {struct ListNode* dummyHead = (struct ListNode*)malloc(sizeof(struct ListNode));dummyHead->next = head;// 每一组的查找头节点,做标志用,本身不查找,并且用来连接两组之间的头节点和尾节点struct ListNode* prev = dummyHead; // 翻转头节点struct ListNode* curr = head;while(curr){// 尾节点,查找本组的末尾,将其next设置为NULLstruct ListNode* tail = prev;for(int i=0;i<k;i++){tail = tail->next;if(!tail) return dummyHead->next;}// 保存下一组的头节点struct ListNode* next = tail->next;tail->next = NULL;  //断开TwoAddress* temp = reverse(curr);  // 翻转这组prev->next = temp->head;  // 拼接temp->tail->next = next;prev = temp->tail;curr = temp->tail->next;}return dummyHead->next;
}

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

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

相关文章

媒体邀约的好处?怎么邀请媒体?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体邀约的好处主要体现在提高品牌知名度、扩大受众群体以及与媒体建立良好的合作关系。 媒体邀约是一种有效的公关策略&#xff0c;通过吸引媒体关注来促进信息的传播。它可以帮助组织…

MySQL 核心模块揭秘 | 14 期 | 回滚整个事务

回滚整个事务要怎么清除 binlog 日志&#xff0c;InnoDB 又会进行哪些操作&#xff1f; 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品&#xff0c;原创内容未经授…

Detect Pangram(js练习题codewars)

A pangram is a sentence that contains every single letter of the alphabet at least once. For example, the sentence “The quick brown fox jumps over the lazy dog” is a pangram, because it uses the letters A-Z at least once (case is irrelevant). Given a st…

第七届机器学习与机器智能国际会议(MLMI 2024)即将召开!

第七届机器学习与机器智能国际会议&#xff08;MLMI 2024&#xff09;将于2024年8月2-4日在日本大阪举行。AI之巅&#xff0c;智慧之源&#xff0c;MLMI 2024将汇聚全球机器学习与机器智能领域的专家学者&#xff0c;分享最新的研究成果和实践经验&#xff0c;共同探讨如何将最…

安防视频监控/视频集中存储EasyCVR平台级联时,下级平台未发流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

常见面试算法题-九宫格按键输入法

■ 题目描述 九宫格按键输入&#xff0c;判断输出&#xff0c;有英文和数字两个模式&#xff0c;默认是数字模式&#xff0c;数字模式直接输出数字&#xff0c;英文模式连续按同一个按键会依次出现这个按键上的字母&#xff0c;如果输入”/”或者其他字符&#xff0c;则循环中…

基于Echarts的超市销售可视化分析系统(数据+程序+论文

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示&#xff0c;帮助决策层更好地了解销售情况和趋势&#xff0c;进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…

DP的相关知识点

树形DP&#xff0c;即树形动态规划&#xff0c;是一种在树状结构&#xff08;如树、森林、有向无环图等&#xff09;上进行动态规划的方法。这种方法的核心思想是将问题拆解为子问题&#xff0c;并利用子问题的解来求解更大规模的问题。 树形DP的状态转移方程通常根据问题的具…

SpringBoot相关知识点总结

1 SpringBoot的目的 简化开发&#xff0c;开箱即用。 2 Spring Boot Starter Spring Boot Starter 是 Spring Boot 中的一个重要概念&#xff0c;它是一种提供依赖项的方式&#xff0c;可以帮助开发人员快速集成各种第三方库和框架。Spring Boot Starter 的目的是简化 Sprin…

大数据大厂面试题

文章目录 一、Hadoop大厂面试真题1、请说下HDFS读写流程2、HDFS在读取文件的时候&#xff0c;如果其中一个块突然损坏了怎么办3、HDFS在上传文件的时候&#xff0c;如果其中一个DataNode突然挂掉了怎么办4、NameNode在启动的时候会做哪些操作5、Secondary NameNode了解吗&#…

椭圆曲线密码学(ECC)基本介绍和总结

背景 ECC英文全称"Elliptic Curve Cryptography"&#xff0c;其背后的密码学原理或者说安全性&#xff0c;是基于椭圆曲线离散对数问题&#xff08;Elliptic Curve Discrete Logarithm Problem&#xff0c;ECDLP&#xff09;。ECC密码学被普遍认为是RSA密码系统的接…

Linux C++ 039-STL之拷贝和替换算法

Linux C 039-STL之拷贝和替换算法 本节关键字&#xff1a;Linux、C、拷贝算法、替换算法 相关库函数&#xff1a;copy、replace、replace_if、swap copy() 功能描述&#xff1a;容器内指定范围的元素拷贝到另一容器中 函数原型&#xff1a; copy(iterator beg, iterator en…

spring的自动配置原理

spring的自动配置原理 springboot配置文件的装配过程 1、springboot在启动的时候会加载主配置类&#xff0c;开启了EnableAutoConfiguration。 2、EnableAutoConfiguration的作用&#xff1a; 利用AutoConfigurationImportSelector给容器导入一些组件。查看selectImports方…

cuda 算法计算 提速技巧

1、除法改乘法 2、常数相关计算可提前算好&#xff0c;避免重复计算 3、尽量不用条件判断语句 4、sin、cos、pow等类似函数改为sinf、cosf、powf等单精度浮点运算函数&#xff0c;此操作会牺牲一点计算精度 5、避免使用double计算、整型除法等&#xff0c;单精度浮点数计算…

本地做好准备上传到Git分支,发现git上已经更新了,上传到dev分支

git add . git commit -m 备注 git pull --rebase origin dev 拉取dev上的代码合并到本地 git push -u origin dev推到远程dev上&#xff08;注意着可能不是最后一步&#xff0c;先看完&#xff09; 如果报错&#xff0c;意思是本地没有dev分支&#xff0c;没办法上传到git上…

Qt对象池,单例模式,对象池可以存储其他类的对象指针

代码描述&#xff1a; 写了一个类&#xff0c;命名为对象池&#xff08;ObjectPool &#xff09;&#xff0c;里面放个map容器。 3个功能&#xff1a;添加对象&#xff0c;删除对象&#xff0c;查找对象 该类只构建一次&#xff0c;故采用单例模式功能描述&#xff1a;对象池可…

树和二叉树(一)

一、树 非线性数据结构&#xff0c;在实际场景中&#xff0c;存在一对多&#xff0c;多对多的情况。 树( tree&#xff09;是n (n>0&#xff09;个节点的有限集。当n0时&#xff0c;称为空树。 在任意一个非空树中&#xff0c;有如下特点。 1.有且仅有一个特定的称为根的节点…

ELK日志分析系统之Kafka

目录 一、消息队列基本介绍 1、为什么需要消息队列(MQ) 2、使用消息队列的好处 1.解耦 2.可恢复性 3.缓冲 4.灵活性 & 峰值处理能力 5.异步通信 3、Kafka消息队列的两种模式 1.点对点模式 2.发布/订阅模式 二、Kafka基本介绍 1、Kafka定义 2、Kafka概念 3、…

4. Vue Router4 动态路由

在 Vue Router 4 中&#xff0c;动态路由是一种非常强大的功能&#xff0c;它允许我们根据不同的 URL 参数来渲染不同的组件或者同一组件的不同状态。这对于创建用户个人页面或者具有大量内容的应用来说非常有用。 基本用法 要创建一个动态路由&#xff0c;我们可以在路由的路…

SSRF靶场

SSRF概述 ​ 强制服务器发送一个攻击者的请求 ​ 互联网上的很多web应用提供了从其他服务器&#xff08;也可以是本地)获取数据的功能。使用用户指定的URL&#xff0c;web应用可以获取图片&#xff08;载入图片&#xff09;、文件资源&#xff08;下载或读取)。如下图所示&…