当前位置: 首页 > news >正文

反转链表系列

206. 反转链表 - 力扣(LeetCode)

/*** 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* reverseList(ListNode* head) {ListNode* pre = nullptr;ListNode* cur = head;ListNode* nxt = new ListNode(0);while(cur != nullptr){nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}return pre;}
};

92. 反转链表 II - 力扣(LeetCode)

/*** 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* reverseBetween(ListNode* head, int left, int right) {if(head->next == nullptr){return head;}ListNode* p0 = head;for(int i =1;i<left-1;i++){p0 = p0->next;}ListNode* cur = p0->next;ListNode* pre = new ListNode(0);ListNode* nxt = new ListNode(0);int times = right - left + 1;for(int i =0;i<times;i++){nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}p0->next->next = cur;p0->next = pre;return head;}
};

25. K 个一组翻转链表 - 力扣(LeetCode)

/*** 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* dummy = new ListNode(0);dummy->next = head;ListNode* fast = head;int num = 0;while(fast){fast = fast->next;num++;}ListNode* p0 = dummy;while( num-k >= 0){num -= k;ListNode* cur = p0->next;ListNode* pre = nullptr;ListNode* nxt = nullptr;for(int i = 0;i<k;i++){nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;} nxt = p0->next;p0->next->next = cur;p0->next = pre;p0 = nxt;}return dummy->next;}
};

今天是我第二次写这三道题,昨天跟朋友一起讨论408历年真题的算法设计题,里面有一个涉及到快慢指针找中点,然后反转后半段链表的。我就重新做了一下这三道反转链表题。并且有了更进一步的理解。

首先最核心的代码就是这四句:

nxt = cur->next;
cur->next = pre;
pre = cur;
cur = nxt;

然后这个pre和nxt都是可以初始化成一个空指针的。cur就是你要反转的第一个结点。

这四句的意思把cur反转指向pre。最后再让两个指针向右移动。

1.如果是反转全部链表,就只需要判断cur为空的时候停止反转就可以了,最后返回pre

2.如果是反转区间链表,就需要一个p0指示cur,让cur = p0->next;这个p0我的理解就是为反转区间结点善后的。当你反转好一个区间的链表,还要执行下面这2句:

p0->next->next = cur;
p0->next = pre;

就是让区间左边界内的第一个节点指向区间右边界外面的第一个节点,再让p0指向pre,就是区间右边界内的第一个节点。

这是示意图:

3.如果是k个一组反转链表,这时候这个指示器p0作用就更大了,它就要指示多个区间。

在K个一组节点基本的反转结束后要执行这4句话:

nxt = p0->next;
p0->next->next = cur;
p0->next = pre;
p0 = nxt;

这里要非常非常注意的地方是先保存p0->next,因为反转链表以后这K个节点组成的区间内第一个节点就变成了最后一个节点,然后下一次的p0是要移动到这个区间的最后一个节点,也就是下一个区间前的第一个节点。所以一定一定要保存p0->next为nxt,最后把p0移动到nxt。这是它与第二问区间反转最大的不同。其他地方都差求不多。

个人感觉我的图画的也是比较清楚了。我想这里有个细节可能大家也注意到了,就是在区间反转的时候,cur总是会“探出”这个区间,指到下一个区间的第一个节点。这个性质也要活用呦。

如果是408那道题,从中点反转链表,我们只需要用最简单的第一问的方法,从中点后面全部反转即可。希望看完这篇文章能对你学习反转链表有所帮助~

博主是算法小菜鸟,大家一起进步~

相关文章:

反转链表系列

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; /*** 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 …...

算力租赁:数字经济时代的 “电力革命”—— 从资源租赁到创新生态的范式重构

引言&#xff1a;当算力成为新 “石油”&#xff0c;租赁模式如何重塑商业未来&#xff1f; 在数字经济浪潮中&#xff0c;算力早已超越传统硬件范畴&#xff0c;成为驱动企业创新的核心生产要素。据 IDC 预测&#xff0c;全球数据总量将在 2025 年突破 175 ZB&#xff0c;而人…...

Go:基本数据

文章目录 整数浮点数复数布尔值字符串字符串字面量UnicodeUTF - 8字符串和字节 slice字符串和数字的相互转换 常量常量生成器 iota无类型常量 整数 分类 Go 的整数类型按大小分有 8 位、16 位、32 位、64 位 &#xff0c;同时有符号整数包括int8、int16、int32、int64 &#…...

金融行业软件介绍

金融&#xff0c;本质为货币资金的融通&#xff0c;是经济活动中至关重要的领域。它围绕货币、信用、利率等核心要素运转&#xff0c;借助银行、证券机构、保险机构等众多主体&#xff0c;在货币市场与资本市场中实现资金的调配与流转&#xff0c;具有优化资源配置、分散风险及…...

Python的那些事第四十九篇:基于Python的智能客服系统设计与实现

基于Python的智能客服系统设计与实现 摘要 随着人工智能技术的飞速发展,智能客服系统逐渐成为企业提升客户服务质量和效率的关键工具。本文详细介绍了基于Python的智能客服系统的设计与实现方案,涵盖了系统架构、核心功能、技术选型及优化建议,旨在为企业构建高效、智能的客…...

vscode报错:unins000.exe 尝试在目标目录创建文件时发生一个错误

打开vscode&#xff0c;报错 这个错误提示表明在卸载或安装 Visual Studio Code 时&#xff0c;系统拒绝访问目标目录中的文件 unins000.exe。以下是解决此问题的有效方法&#xff1a; 检查文件权限 找到文件所在目录&#xff08;如 D:\software\Microsoft VS Code&#xff…...

当气象水文遇见R语言——破解时空数据的“达芬奇密码“

在气象水文科学领域&#xff0c;数据从来不只是简单的数字阵列。台风路径的时空跳跃、流域径流的非线性涨落、气候要素的混沌演变&#xff0c;这些充满不确定性的自然现象转化为数据时&#xff0c;呈现出多维时空交织的复杂图景。研究人员常常要在TB级遥感数据中捕捉毫米级降水…...

LEARNING DYNAMICS OF LLM FINETUNING【论文阅读笔记】

LEARNING DYNAMICS OF LLM FINETUNING 一句话总结 作者将LLM的学习动力机制拆解成AKG三项&#xff0c;并分别观察了SFT和DPO训练过程中​​正梯度信号​​和​​负梯度信号​​的变化及其带来的影响&#xff0c;并得到以下结论&#xff1a; ​​SFT通过梯度相似性间接提升无关…...

【射频仿真学习笔记】变压器参数的Mathematica计算以及ADS仿真建模

变压器模型理论分析 对于任意的无源电路或者等效电路&#xff0c;当画完原理图后&#xff0c;能否认为已经知道其中的两个节点&#xff1f;vin和vout之间的明确解析解 是否存在一个通用的算法&#xff0c;将这里的所有元素都变成了符号&#xff0c;使得这个算法本身就是一个函…...

改善 Maven 的依赖性

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 建议使用mvn dependency:analyze命令来摆脱已声明但未使用的依赖项&#xff1a; 还有另一个用例&#xff0c; mvn dependency:analyze 它可…...

循环神经网络 - LSTM 网络的各种变体

前面的博文中&#xff0c;我们了解和学习了长短期记忆网络&#xff0c;本文我们来学习LSTM 网络的各种变体。 目前主流的 LSTM 网络用三个门来动态地控制内部状态应该遗忘多少历史信息&#xff0c;输入多少新信息&#xff0c;以及输出多少信息.我们可以对门控机制进行改进并获…...

LangGraph 概述

LangGraph 介绍 LangGraph 是 LangChain 框架的扩展&#xff0c;专为创建基于大型语言模型&#xff08;LLMs&#xff09;的有状态、多角色应用而设计。它提供了一个灵活的架构&#xff0c;用于构建复杂的多步骤 LLM 应用&#xff0c;其中状态管理和流程控制至关重要。 为什么…...

Linux系统06---信号

目录 信号 1.1 进程间通信方式 1.2 信号的概念 1.3 查看信号 1.4 信号的产生 1.5 信号的处理 信号的 API 函数 2.1 函数名&#xff1a;kill() 2.2 函数名&#xff1a;raise() 2.3 函数名&#xff1a;alarm() 2.4 函数名&#xff1a;pause() 2.5…...

Java 程序调试与生产问题排查工具Arthas

好的&#xff0c;以下是修改后的博客内容&#xff0c;将公司信息替换为通用的占位符&#xff1a; 深入探索 Arthas&#xff1a;Java 程序调试与生产问题排查的利器 在 Java 开发中&#xff0c;调试和诊断问题往往是一个复杂且耗时的过程。Arthas&#xff08;Alibaba Java Dia…...

PH热榜 | 2025-04-11

1. Voicenotes Pages 标语&#xff1a;如果出版的感觉像是在和朋友聊天呢&#xff1f; 介绍&#xff1a;Voicenotes Pages 是一个极其简单的发布创意和故事的方式。它就像是一个简易的博客或播客&#xff0c;但更容易上手。你只需录制内容&#xff0c;点击发布&#xff0c;就…...

从三围学校项目看:中建海龙智能建造的崛起与突破

在建筑行业迈向智能化、数字化的浪潮里&#xff0c;中建海龙科技有限公司&#xff08;以下简称“中建海龙”&#xff09;从中脱颖而出&#xff0c;成为推动智能建造发展的重要力量。凭借深厚的技术积累、创新的理念以及先进的实践&#xff0c;中建海龙正引领着建筑行业的变革&a…...

aviator 自定义表达式

引入依赖 如果你使用的是 Maven 项目&#xff0c;在 pom.xml 中添加以下依赖&#xff1a; <dependency><groupId>com.googlecode.aviator</groupId><artifactId>aviator</artifactId><version>5.3.2</version> </dependency>…...

电商中的购物车(redis的hash类型操作)

购物车样式 ①、创建service-cart模块 spring:profiles:active: devserver:port: 8513 spring:application:name: service-cartcloud:nacos:discovery:server-addr: localhost:8848data:redis:host: localhostport: 6379启动类 SpringBootApplication(excludeDataSourceAutoC…...

Ubuntu 系统错误日志常见问题

一、Ubuntu 系统日志文件位置 1. 核心系统日志 日志文件用途说明/var/log/syslog所有系统级别的日志(包括内核、服务等)/var/log/kern.log内核相关的详细日志(如硬件驱动问题)/var/log/auth.log用户认证日志(SSH登录、sudo权限等)/var/log/dpkg.log软件包安装/卸载日志/…...

《Uniapp-Vue 3-TS 实战开发》TypeScript 泛型详解

泛型(Generics)是 TypeScript 中非常重要的特性,它允许我们创建可重用的组件,这些组件可以支持多种类型,而不会丢失类型安全性。 一、泛型基础 1. 基本概念 泛型允许我们在定义函数、接口或类时不预先指定具体类型,而是在使用时再指定类型。 // 不使用泛型 function …...

mysql 删除表等待

今天有个表加字段&#xff0c;语句是先删除&#xff0c;后重新建&#xff0c;表没有数据 &#xff0c;但是删除一个表的时候&#xff0c;语句drop table 提示超时 show processlist 后&#xff0c;等待类型是 Waiting for table metadata lock 取消重试几次后仍然是如此…...

如何深入理解protobuf

Protocol Buffers&#xff08;protobuf&#xff09;是一种轻便高效的结构化数据存储格式&#xff0c;用于数据序列化和反序列化&#xff0c;具有语言无关、平台无关、可扩展性强等特点&#xff0c;能有效提高数据存储和传输的效率。 一.协议的设计 我们在介绍protobuf之前我们…...

《分布式软总线牵手云服务,拓展应用新维度》

分布式软总线与云服务的融合&#xff0c;正掀起一场前所未有的变革&#xff0c;重塑着我们工作、生活和交互的方式。二者的结合&#xff0c;犹如天作之合&#xff0c;不仅打破了设备与数据之间的壁垒&#xff0c;更开启了一系列令人瞩目的全新应用场景。 分布式软总线&#xf…...

ReentrantLock 实现公平锁和非公平锁的原理!

&#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支持一下&#xff0c;感谢&#x1f917;&#xff01; &#x1f31f;了解 ThreadLocal请看&#xff1a; ThreadLocal有趣讲解&#xff0c;小白也能听懂&#xff…...

算法训练之动态规划(四)——简单多状态问题

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

【JavaScript】错误处理与调试

个人主页&#xff1a;Guiat 归属专栏&#xff1a;HTML CSS JavaScript 文章目录 1. JavaScript 错误处理基础1.1 错误类型1.2 try...catch 语句 2. 错误抛出与自定义错误2.1 throw 语句2.2 自定义错误类型 3. 异步错误处理3.1 Promise 错误处理3.2 async/await 错误处理 4. 调试…...

MySQL 管理与配置:查看端口、修改密码与数据存储位置

1.MySQL查看端口号 show global variables like port; 2.MySQL修改密码 grant all privileges on *.* to root% identified by 你的mysql密码 with grant option;flush privileges; 3.查询 MySQL 数据库的数据存储目录 MySQL 的所有数据库文件、表数据、索引、日志文件等都存…...

(四十二)Dart 中的接口与抽象类

Dart 中的接口与抽象类 Dart 的接口特性 在 Dart 中&#xff0c;接口的实现方式与 Java 有所不同。Dart 没有专门的 interface 关键字来定义接口&#xff0c;而是通过普通类或抽象类来实现接口的功能。以下是 Dart 接口的主要特点&#xff1a; 普通类或抽象类都可以作为接口 …...

Java习题:合并两个有序数组

文章目录 前言一、题目描述二、方法2.1 方法一2.2 方法二 前言 虽然这个题目很简单&#xff0c;但是在使用java语言实现的过程中&#xff0c;存在多种方法这是很有意思的一道题&#xff0c;所以小编在这里写下它的各种方法加深javase语法的学习。 提示&#xff1a;以下是本篇文…...

spm12_fMRI 2*4混合方差分析 Flexible factorial 对比矩阵

实验设计&#xff1a;2*4被试内设计 分析模型&#xff1a;spm 二阶分析中的 Flexible factorial 问题&#xff1a;Flexible factorial交互作用对比矩阵如何编写&#xff1f; 老师&#xff1a;deepseek老师【大神们看看这个矩阵是否可以如下编写&#xff1f;】 以下是来自de…...

力扣第272场周赛

周赛链接&#xff1a;竞赛 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 这场周赛是在课堂上模拟的, 总体来说比较简单, 但不幸被老师压力了。以下分享一下我的解题思路 如果你每天没有时间刷题的话, 可以看一下我写的东西, 我尽量讲解的通俗一些, 不会…...

【5】深入学习npm-Nodejs开发入门

深入学习npm npm详解npm的组成-registrynpm的组成-websitenpm的组成-clinpm-confignpm-initnpm-installnpm-startnpm-uninstallnpm-version其他命令 再谈registrypackage.json配置基本结构必填字段可选字段依赖管理其他配置完整配置 node_modules其他 npm详解 我们在前面安装N…...

2025.04.05 广东汕尾两日游记

2025.04.05 广东汕尾两日游记 文章目录 2025.04.05 广东汕尾两日游记一、前言二、我的两日游行程1、行程2、这两天吃喝玩乐的地方 三、其他1、汕尾两日游小结2、汕尾前十景点&#xff08;1&#xff09;玄武山旅游区&#xff08;2&#xff09;红海湾遮浪旅游区&#xff08;3&…...

【数学建模】(智能优化算法)鲸鱼优化算法(Whale Optimization Algorithm)详解与应用

鲸鱼优化算法(Whale Optimization Algorithm)详解与应用 文章目录 鲸鱼优化算法(Whale Optimization Algorithm)详解与应用1. 引言2. 算法原理2.1 生物学基础2.2 数学模型[^3]1. 包围猎物阶段2. 气泡网攻击&#xff08;螺旋更新&#xff09;3. 随机搜索猎物&#xff08;全局探索…...

11-Java并发编程终极指南:ThreadLocal与并发设计模式实战

Java并发编程终极指南&#xff1a;ThreadLocal与并发设计模式实战 一、ThreadLocal核心原理剖析 1. 线程本地存储实现机制 #mermaid-svg-EX865K5oO873R6OO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EX865K5o…...

数据库数据恢复——sql server数据库被加密怎么恢复数据?

SQL server数据库数据故障&#xff1a; SQL server数据库被加密&#xff0c;无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密&#xff0c;文件名字被篡改。 SQL server数据库数据恢复过程&#xff1a; 1、将所有数据库做完整只读备份。后续所有数据恢…...

0501路由-react-仿低代码平台项目

文章目录 1 react路由1.1 核心库&#xff1a;React Router安装 1.2 基本路由配置路由入口组件定义路由 1.3 导航方式使用 <Link> 组件编程式导航 1.4 动态路由参数定义参数获取参数 1.5 嵌套路由父路由配置子路由占位符 1.6 重定向与404页面重定向404页面 1.7 路由守卫&a…...

C++二分查找

一、模板①&#xff1a;向下取整&#xff08;mid (l r) >> 1&#xff09; while (l < r) {int mid l r >> 1; // 等价于 (l r) / 2&#xff08;向下取整&#xff09;if (check(mid)) r mid; // 保留左半区else l mid 1; // 舍弃左半区 } 适用场…...

c++将jpg转换为灰度图

c将jpg转换为灰度图 step1:添加依赖 下载这两个文件&#xff0c;放在cpp同一目录下&#xff0c;编译生成 https://github.com/nothings/stb/blob/master/stb_image_write.h https://github.com/nothings/stb/blob/master/stb_image.hstep2:C:\Users\wangrusheng\source\repos…...

react/vue中前端多图片展示页面优化图片加载速度的五种方案

需求背景 在多项目中 例如官网项目中 会出现很多大图片显示的情况 这个时候就会出现图片过大 公司带宽不够之类导致页面加载速度过慢及页面出现后图片仍然占位但并未加载出来 或者因为网络问题导致图片区域黑块等等场景 这个时候我们就要对图片和当前场景进行优化 方案定…...

第二届电气技术与自动化工程国际学术会议 (ETAE 2025)

重要信息 2025年4月25-27日 中国广州 官网: http://www.icetae.com/ 部分 征稿主题 Track 1&#xff1a;电气工程 输配电、电磁兼容、高电压和绝缘技术、电气工程、电气测量、电力电子及其应用、机电一体化、电路与系统、电能质量和电磁兼容性、电力系统及其自…...

Windows 图形显示驱动开发-WDDM 2.0功能_上下文监视

功能概述 上下文监视机制是GPU与CPU协同计算的核心同步技术&#xff0c;通过受监视围栏&#xff08;Monitored Fence&#xff09;实现跨硬件单元的高效协调。其核心目标是解决以下场景的同步需求&#xff1a; GPU引擎间同步&#xff1a;例如在多渲染管线中&#xff0c;后处理…...

YOLOv12即插即用---PPA

1.模块介绍 多分支特征提取:PPA 模块采用局部卷积、全局卷积和串行卷积三种并行分支,从多个尺度和层次提取特征,有效保留小目标在多次下采样过程中的关键信息。 特征融合与注意力增强:在特征提取后,PPA 模块引入高效的通道注意力和空间注意力机制,实现自适应特征增强,…...

MySql主从相关概念

想象一下&#xff0c;你的业务飞速增长&#xff0c;用户请求如潮水般涌来&#xff0c;突然数据库主库宕机&#xff0c;数据丢失&#xff0c;服务瘫痪——这简直是开发者的噩梦&#xff01;MySQL主从复制就像一张安全网&#xff0c;通过主库写、从库读的协作模式&#xff0c;不仅…...

精品推荐-最新大模型MCP核心架构及最佳实践资料合集(18份).zip

精品推荐-最新大模型MCP核心架构及最佳实践资料合集&#xff0c;共18份。 1、2025年程序员必学技能&#xff1a;大模型MCP核心技术.pdf 2、MCP 架构设计剖析&#xff1a;从 Service Mesh 演进到 Agentic Mesh.pdf 3、MCP 架构设计深度剖析&#xff1a;使用 Spring AI MCP 四步…...

Qt模型-视图架构

引言 在GUI开发中&#xff0c;数据与界面的同步一直是核心挑战。传统方法将数据存储在界面组件内部容器中&#xff0c;容易引发数据冗余和同步问题。Qt的模型-视图&#xff08;Model-View&#xff09;架构通过解耦数据与界面&#xff0c;提供了更优雅的解决方案。本文将深入剖…...

Transformers 是工具箱,BERT 是工具。

Transformers 是工具箱&#xff0c;BERT 是工具。 &#x1f50d; 详细解释&#xff1a; 名称作用比喻理解举例&#x1f916; transformers&#xff08;库&#xff09;一个框架&#xff0c;提供很多 NLP 模型的“使用方式”&#xff0c;包括文本分类、问答、摘要等相当于一个“…...

AI应用企业研发方案

一、引言 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度融入各个行业&#xff0c;推动着企业的创新与变革。对于医药流通行业批发公司而言&#xff0c;面对日益激烈的市场竞争和不断变化的客户需求&#xff0c;借助AI技术提升企业的…...

Python实例题:Python实现iavaweb项目远端自动化更新部署

目录 Python实例题 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 execute_remote_command 函数&#xff1a; deploy_java_web_project 函数&#xff1a; 主程序&#xff1a; 运行思路 结束语 Python实例题 题目 Python实现iavaweb项目远端…...

NO.90十六届蓝桥杯备战|动态规划-区间DP|回文字串|Treats for the Cows|石子合并|248(C++)

区间dp也是线性dp的⼀种&#xff0c;它⽤区间的左右端点来描述状态&#xff0c;通过⼩区间的解来推导出⼤区间的解。因此&#xff0c;区间DP的核⼼思想是将⼤区间划分为⼩区间&#xff0c;它的状态转移⽅程通常依赖于区间的划分点。 常⽤的划分点的⽅式有两个&#xff1a; 基于…...