LeetCode 刷题【24. 两两交换链表中的节点、25. K 个一组翻转链表】

24. 两两交换链表中的节点

自己做

解:直接置换

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* swapPairs(ListNode* head) {ListNode *p = head;if(p == nullptr)                //空链表return nullptr;if(p->next == nullptr)          //只有一个元素return head;//先交换前两位ListNode *q = p->next; ListNode *r = q->next;p->next = r;               q->next = p;head = q;       //更新头指针指向的结点q = p->next;if(q != nullptr)r = q->next;elser = nullptr;//三英杰就位,交换?启动!while(r != nullptr){//交换p->next = r;q->next = r->next;r->next = q;//更新pqr位置p = q;q = p->next;if(q == nullptr)break;r = q->next;}return head;}
};

25. K 个一组翻转链表

自己做

 解:头插反转合并

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode *p = head;ListNode *r = new ListNode();       //头插//统计链表长度int len = 0;while(p != nullptr){p = p->next;len++;}if(len < k)               //连一组k都凑不出来return head;if(k == 1)                  //不用交换return head;//先处理第一组p = head;                   //重置指针p(上面用来统计长度了)ListNode *q = p->next;ListNode *tail = p;                //重新排序好的链表尾指针for(int i = 0; i < k; i++){     p->next = r->next;          //头插r->next = p;p = q;if(p != nullptr)q = q->next;}head = r->next;                 //重置头结点len -= k;                       //长度更新(这个长度表示剩下要排序的元素个数)while(len >= k){r->next = nullptr;          //重置头插链表ListNode *end = p;          //end指向头插链表的尾部for(int i = 0; i < k; i++){     p->next = r->next;          //头插r->next = p;p = q;if(p != nullptr)q = q->next;}//现在r指向的头插链表又填装好了,p也指向了下一组的起始位置tail->next = r->next;           //反转的部分和原先的链表合并(head指向的)tail = end;                     //更新taillen -= k;                   //更新长度}//凑不成一组的部分合并tail->next = p;return head;}
};

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

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

相关文章

多线程向设备发送数据

需求:做一个部门授权&#xff0c;可以把所选择部门下面的所有人的人脸信息传到设备组里(多个设备)&#xff0c;问题在于图片是通过Base64处理之后的&#xff0c;会导致文件名非常长&#xff0c;如果一次性传很多数据就会超过设备的最长请求长度&#xff0c;如果不用Base64处理的…

Buck的Loadline和DVS区别和联系

Buck 电路设计中&#xff0c;有两个概念&#xff0c;一个是Load-Line&#xff0c;一个是DVS&#xff0c;它们的含义是什么呢。 Load-Line&#xff08;也称为有源电压定位&#xff0c;AVP&#xff09;是通过调整BUCK电路的输出电压&#xff0c;使其根据负载电流动态变化的技术。…

MySQL会话连接数消耗内存分析

关于连接数消耗内存情况 FROM DEEPSEEK 在 MySQL 中&#xff0c;每个单独的空闲连接所消耗的内存量取决于多个因素&#xff0c;包括连接的线程栈大小&#xff08;由 thread_stack 参数设置&#xff09;和其他每个连接的缓冲区。根据测试结果来看&#xff0c;对于空闲连接的内…

Objective-C实现调节笔记本屏幕亮度(附完整源码)

Objective-C实现调节笔记本屏幕亮度 在macOS上,您可以使用Objective-C来调节笔记本的屏幕亮度。以下是一个简单的示例,演示如何使用CoreGraphics框架来实现这一功能。请确保您的Xcode项目中包含CoreGraphics框架。 完整源码示例 #import <Cocoa/Cocoa.h> #import <…

三十一、【Linux网站服务器】搭建httpd服务器演示个人主页、用户认证、https加密网站配置

httpd服务器功能演示一、安装 HTTPD 服务二、配置个人用户主页1. 启用个人空间功能2. 创建测试用户及网站目录3. 配置 SELinux 权限三、配置用户认证1. 创建密码文件2. 配置目录认证3. 重启服务生效四、配置 SSL 加密网站1. 生成自签名证书2. 配置 SSL 虚拟主机3. 重启服务验证…

把Java程序部署到本地Docker

一&#xff1a;clean && install程序install之后会在target中生成jar包 二&#xff1a;准备三个文件&#xff08;1&#xff09;其中Dockerfile主要起到配置作用&#xff1a;# 基础镜像 FROM openjdk:17-jdk-slim # 作者 MAINTAINER "" # 配置 ENV PAR…

Java学习-------外观模式

在软件开发中&#xff0c;随着系统的不断迭代&#xff0c;模块会越来越多&#xff0c;模块之间的依赖关系也会变得错综复杂。这不仅会增加开发难度&#xff0c;还会让系统的维护和扩展变得棘手。而外观模式就像一位 “前台接待员”&#xff0c;为复杂的系统提供一个简洁统一的接…

Go语言-->变量

Go语言–>变量 在 Go 语言中&#xff0c;定义变量有几种常见的方式。下面是一些常见的语法和用法&#xff1a; 1. 使用 var 关键字定义变量 最常见的方式是使用 var 关键字&#xff0c;后面跟上变量名和类型。你也可以为变量赋初值。 基本格式&#xff1a; var variableName…

分布式链路追踪的实现原理

分布式链路追踪系统的实现涉及多个核心技术环节&#xff0c;下面我将从数据采集、上下文传播、存储分析等维度深入解析其工作原理。 一、核心架构组件 1. 系统组成模块 #mermaid-svg-pDlZY54w2Z0Bp1H1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…

Python爬虫实战:研究micawber库相关技术构建网页采集系统

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上的数据量呈现出爆炸式增长。如何从海量的网页数据中提取有价值的信息,成为了一个重要的研究课题。网络爬虫作为一种自动获取网页内容的技术,为解决这一问题提供了有效的手段。通过网络爬虫,可以快速、高效地采集…

前端框架Vue3(三)——路由和pinia

路由的理解 路由就是一组key-value的对应关系&#xff0c;多个路由&#xff0c;需要经过路由器的管理。 路由-基本切换效果 导航区、展示区请来路由器制定路由的具体规则&#xff08;什么路径&#xff0c;对应着什么组件&#xff09;形成一个一个的路由 【两个注意点】 路由组件…

【go】实现BMI计算小程序与GUI/WEB端实现

好的&#xff0c;下面是用 Go 语言实现的一个简单的 BMI&#xff08;Body Mass Index&#xff0c;身体质量指数&#xff09;计算器&#xff0c;包含中文注释与完整代码&#xff0c;可以直接运行。 一、BMI 计算公式 BMI体重&#xff08;kg&#xff09;身高2&#xff08;m2&…

Windows系统优化命令-记录

闲着无聊&#xff0c;近来电脑有些卡顿&#xff0c;记录一下相关命令。最好的命令还是格式化╮(╯▽╰)╭ 1. 磁盘清理相关命令 cleanmgr - 磁盘清理工具 cleanmgr启动磁盘清理工具&#xff0c;可清理临时文件、回收站等内容 diskpart - 磁盘分区工具 diskpart用于磁盘管理&…

BFCP协议学习

BFCP是为了SIP呼叫中实现presentation的二进制协议。开源库libbfcp 如何协商角色 SIP 消息的SDP中有BFCP 的部分&#xff0c;其中s-only 代表要当服务器角色&#xff0c;c-only 代表要当client角色。confid, userid 都是需要在后续消息中对齐的。 通过port信息可以为后续bfcp…

常用设计模式系列(十七)—命令模式

常用设计模式系列&#xff08;十七&#xff09;—命令模式 第一节、前言 各位老铁好&#xff01; 今天我来跟大家分享对象行为型模式第二章节——《命令模式》&#xff0c;“命令”一词&#xff0c;通俗易懂&#xff0c;我们在生活中经常会发出各种各样的命令&#xff0c;就像你…

【AI绘画】Stable Diffusion 全面指南:安装、版本对比、功能解析与高级应用

引言&#xff1a;Stable Diffusion 概述 在人工智能图像生成领域&#xff0c;商业工具如Midjourney凭借其集成化服务与高质量输出占据市场&#xff0c;而Stable Diffusion&#xff08;简称SD&#xff09;则以开源特性构建了差异化优势。与商业工具依赖云端资源、受限于订阅费用…

kafka使用kraft

window 使用kafka-storage生成生成一个uuid .\kafka-storage.bat random-uuid格式化存储 在这里插入代码片.\kafka-storage.bat format -t 对应的uuid D:\configure\fisher\kafka\config\kraft\server.properties 启动命令 .\kafka-server-start.bat D:\configure\fisher\kafka…

HCIA-Datacom认证笔记:IP路由基础——核心概念与路由分类

网络技术学习中&#xff0c;IP路由是绕不开的核心知识点&#xff0c;对于备考HCIA-Datacom认证的朋友来说&#xff0c;掌握路由基础能为后续学习打下良好基础。今天带朋友们梳理一下IP路由的核心概念、路由表结构及路由分类一、路由核心概念什么是路由&#xff1f; 简单来说&am…

FFmpeg 安装与使用

文章目录1. 环境部署&#xff08;Windows&#xff09;1.1. 安装包下载1.2. 配置环境变量1.3. 验证安装2. FFmpeg 基础使用教程2.1. 常用命令格式2.2. 基础功能示例2.2.1. 视频转码&#xff08;MP4 → MKV&#xff09;2.2.2. 调整分辨率&#xff08;1080p → 480p&#xff09;2.…

Python 数据分析(四):Pandas 进阶

目录 1. 概述2. 缺失项3. 分组聚合4. 数据合并5. 数据可视化 5.1 折线图5.2 条形图5.3 直方图5.4 散点图5.5 饼图 1. 概述 我们在上一篇文章初识 Pandas中已经对 Pandas 作了一些基本介绍&#xff0c;本文我们进一步来学习 Pandas 的一些使用。 2. 缺失项 在现实中我们获…