反转链表题目
文章目录
- 反转链表
- 题目链接:[在线OJ](https://leetcode.cn/problems/reverse-linked-list/description/)
- 题目详解
- 思路1:
- 思路1算法复杂度
- 思路2
- 代码实现
- 思路2算法复杂度
- 结语
欢迎大家来到我的博客,给生活来点impetus
让我们进入《题海探骊》,感受算法之美!!
反转链表
题目链接:在线OJ
题目详解

思路1:
这里我们来说一下思路1:

在上述图例中,我们可以设置一个pcur在原链表中逐步往后面遍历,并且在新链表中不断的去头插。这样我们就能够实现反转链表。具体对于基本的链表的增删查改等操作前面已有提及,可以移步单链表进行复习。
while(pcur)
{//新链表中不断进行头插
}
思路1算法复杂度
我们来计算一下时间复杂度为多少?
由于需要不断往后遍历,头插不需要再来遍历,所以这里的时间复杂度为O(n)
这样看是不是感觉这个思路很好了?
但是再头插时:需要再来malloc开辟空间,以及初始化,赋值等操作,就会让简单的思路更加复杂化,不妨换个思路。
思路2
这一次我们直接在原链表上进行操作。
首先我们需要三个指针,分别为n1,n2,n3。
这三个指针各司其职。
请看下图:

接下来我们来讨论一下为什么这个思路可行?
n1作用:保留n2前方的结点,这样就能够赋值后方结点指向给前方结点。克服了单链表只能单向的问题。
n2作用:主要用作判断条件来使用
n3作用:存储n2下一个节点,防止n2赋值给n1时,n2的下一个结点无法找到。
说明:为什么要先n1赋值给n2,在n2赋值给n3,如果交换步骤的话,会造成n2前方的结点找不到了,形如:
代码实现
struct ListNode* reverseList(struct ListNode* head) {if(head==NULL){//细节判断是否为NULLreturn head;}struct ListNode*n1,*n2,*n3;n1=NULL,n2=head,n3=n2->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3)n3=n3->next;}return n1;
}
细节1:解引用操作需要处理,“防空警报“”必须拉响!!!
细节2:因为在思路2判断条件停止的上一步如果不做处理,就会对NULL解引用操作。

思路2算法复杂度
只有一次循环遍历,时间复杂度是O(n),虽然时间复杂度相同,但是代码肯定简洁不少,提升了代码的执行效率。
结语
最后感谢大家“倾听“”我的博客,感谢大家一直以来的支持!!
请一定相信相信的力量,每一滴汗水都会汇聚成滚滚长江,加油!!陌生人!!

相关文章:
反转链表题目
文章目录 反转链表题目链接:[在线OJ](https://leetcode.cn/problems/reverse-linked-list/description/)题目详解思路1:思路1算法复杂度 思路2代码实现思路2算法复杂度 结语 欢迎大家来到我的博客,给生活来点impetus 让我们进入《题海探骊》…...
LED灯按键调光芯片、PWM调光IC、发光灯控制调光芯片
按键调光芯片,特别是LED灯使用PWM调光的芯片IC,是一种用于控制LED灯具亮度的集成电路,常用于台灯、壁灯、吊灯等照明设备中。这种芯片通过脉冲宽度调制(PWM)技术来调节LED的亮度,可以实现从最亮到最暗的平滑…...
Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法
报错信息: android.database.sqlite.SQLiteException: too many SQL variables (code 1 SQLITE_ERROR): while compiling: SELECT * FROM points WHERE id IN (?,?,?,...,?,?,?)SQLiteException: too many SQL variables 通常是由于一次查询或插入的 SQL 语句…...
USA-Entrepreneur-20240708-Business/Unusual
How to Get More Attention You can’t run a great business if you can’t capture people’s attention, says Gary Vaynerchuk. “如果你无法吸引人们的注意力,你就不能经营一家伟大的企业。”——Gary VaynerchukGary Vaynerchuk是一位知名的企业家、作家和公…...
AI算法在目标锁定跟踪领域的利与弊!
AI目标锁定与制导的优点 提高精度和效率: AI算法能够快速准确地分析大量数据,从而改进目标识别和跟踪,提高打击或投放的准确性和效率。 通过深度学习模型,AI可以识别图像中的特征并判断是否存在目标,进一步提取目标…...
移远BC28_opencpu方案_pin脚分配
先上图,BC28模块的pin脚如图所示: 下面看看GPIO的复用管脚 然后我自己整理了一份完整的pin功能列表...
初学stm32 --- II2C_AT24C02,向EEPROM中读写数据
目录 IIC总线协议介绍 IIC总线结构图 IIC协议时序 1. ACK(Acknowledge) 2. NACK(Not Acknowledge) IO口模拟II2C协议 发送起始信号: 发送停止信号: 检测应答信号: 发送应答信号&#x…...
动态规划汇总1
1.动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,…...
【计算机网络】lab5 ARP协议
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
分布式缓存redis
分布式缓存redis 1 redis单机(单节点)部署缺点 (1)数据丢失问题:redis是内存存储,服务重启可能会丢失数据 (2)并发能力问题:redis单节点(单机)部…...
【Rust】数据类型
目录 思维导图 1. 数据类型概述 1.1 标量类型 1.1.1 整数类型 1.1.2 浮点数类型 1.1.3 布尔类型 1.1.4 字符类型 1.2 复合类型 1.2.1 元组类型 1.2.2 数组类型 2. 类型注解与类型推断 3. 整数溢出处理 4. 数字运算 5. 示例 思维导图 1. 数据类型概述 Rust是一种静…...
在现代工业自动化领域CClinkIE转ModbusTCP网关的应用
在现代工业自动化领域,开疆智能CCLINKIE转ModbusTCP网关扮演着至关重要的角色,尤其是在立体仓库的应用中。立体仓库系统通过高度集成的自动化设备和先进的信息技术,实现了物料存储和管理的高效率。CCLINKIE转ModbusTCP网关作为连接不同工业通…...
ASP.NET Core与GraphQL集成
一、引言:探索 C# 与ASP.NET Core、GraphQL 的协同魅力 在当今数字化浪潮中,Web 开发领域不断演进,新技术层出不穷。C# 作为.NET 平台上的中流砥柱,凭借其强大的功能与优雅的语法,成为众多开发者构建各类应用程序的得…...
Zabbix 从入门到精通
一、Zabbix 简介 1.1 什么是 Zabbix Zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。它能监控各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位 / 解决存在的各种问题。 1…...
文生图模型的技术原理、训练方案与微调方案
文生图模型的技术原理、训练方案与微调方案 引言 文生图(Text-to-Image)模型是一类能够根据文本描述生成对应图像的深度学习模型。近年来,随着生成对抗网络(GANs)和扩散模型(Diffusion Models)等技术的进步,文生图模型在图像生成领域取得了显著的进展。本文将详细介绍…...
3_CSS3 渐变 --[CSS3 进阶之路]
CSS3 引入了渐变(gradients),它允许在两个或多个指定的颜色之间显示平滑的过渡。CSS3 支持两种类型的渐变: 线性渐变(Linear Gradients):颜色沿着一条线性路径变化,可以是水平、垂直…...
国内主流的Spring微服务方案指南
构建一个完整的 Spring 微服务方案涉及多个关键组件的集成与配置,包括服务注册与发现、配置管理、API 网关、负载均衡、服务调用、熔断与限流、消息中间件、分布式追踪、服务网格、容器编排以及数据库与缓存等。以下将结合前述内容,详细介绍一个完整的中…...
docker更换镜像源脚本
Ubuntu / Debian 系统下的脚本 sudo curl -fsSL http://luyuanbo79.iepose.cn/wenjian/docker%20jingxiangyuan/Ubuntu-Debian.sh | sh CentOS / RHEL 系统下的脚本 sudo curl -fsSL\n\nhttp://luyuanbo79.iepose.cn/wenjian/docker%20jingxiangyuan/CentOS%20%20RHEL.sh | …...
Java Web开发进阶——错误处理与日志管理
错误处理和日志管理是任何生产环境中不可或缺的一部分。在 Spring Boot 中,合理的错误处理机制不仅能够提升用户体验,还能帮助开发者快速定位问题;而有效的日志管理能够帮助团队监控应用运行状态,及时发现和解决问题。 1. 常见错误…...
计算机网络 笔记 网络层1
网络层功能概述 主要的任务是把分组从源端传输到目的端,为分组交换网上的不同主句提供通信服务,网络层的传输单位是数据报。 主要的功能; 1,路由选择:路由选择指网络层根据特定算法,为数据包从源节点到目…...
抖音直播回放下载工具全解析:技术原理与跨领域应用指南
抖音直播回放下载工具全解析:技术原理与跨领域应用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...
用Minimalmodbus玩转PLC通信:从环境配置到寄存器读写的完整流程
MinimalModbus实战指南:高效连接西门子PLC的Python自动化方案 工业自动化领域的数据采集常面临设备资源有限、协议兼容性复杂等挑战。作为一款专为嵌入式系统优化的轻量级库,MinimalModbus以其简洁的API和极低的内存占用,成为连接西门子S7系列…...
ERNIE-4.5-0.3B-PT医疗问答系统开发:从模型部署到前后端集成
ERNIE-4.5-0.3B-PT医疗问答系统开发:从模型部署到前后端集成 1. 医疗问答系统的价值与挑战 医疗咨询是每个人都会遇到的实际需求,但专业医疗资源有限,很多时候我们只是需要一些基础的医疗建议和健康指导。传统的医疗问答系统往往依赖规则匹…...
Node.js 结合 LangChainJS 实现智能对话系统的实战探索
1. 为什么选择Node.js和LangChainJS构建智能对话系统 最近几年,智能对话系统已经成为开发者工具箱里的标配。作为一个在AI领域摸爬滚打多年的老手,我发现Node.js和LangChainJS的组合特别适合快速搭建这类系统。Node.js的异步非阻塞特性让它天生适合处理对…...
OpenClaw开源贡献:为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF开发社区技能
OpenClaw开源贡献:为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF开发社区技能 1. 为什么我要为OpenClaw开发技能 去年冬天,我在整理个人项目文档时,突然意识到一个痛点:每次都要手动将Markdown笔记转换成不同平台要求的格式…...
【GD32F407】内部Flash高效读写策略与实战优化
1. GD32F407内部Flash特性解析 GD32F407作为国产MCU中的明星产品,其内部Flash设计颇具特色。第一次拿到芯片手册时,我发现它的存储架构比想象中复杂得多。最让我印象深刻的是前512KB空间的零等待特性——这意味着在此范围内的代码执行速度堪比RAM&#x…...
从宿主机(Windows)通过 NAT 模式连接虚拟机(Ubuntu)中的 MySQL
宿主机(NAT 模式)连接虚拟机 MySQL 完整记录环境:Windows 宿主机 VMware Workstation(Ubuntu 虚拟机,NAT 网络) 目标:从宿主机通过本地网络连接虚拟机内的 MySQL,并允许 Java 等程序…...
C++与C混合编程:extern ‘C‘原理与实践指南
1. 揭开extern C的神秘面纱第一次看到extern C这个语法时,我和大多数C新手一样感到困惑。它看起来像是一个可有可无的修饰符,直到我在实际项目中踩了坑才明白它的重要性。记得那是一个跨平台的网络库项目,当我们尝试在C代码中调用一个C语言编…...
Kafka消费者数据质量与治理:构建可信数据管道的最佳实践
摘要 在实时数据驱动的企业架构中,Apache Kafka已成为流式数据骨干的核心组件。然而,随着数据规模的指数级增长和数据消费者的多样化,如何确保Kafka管道中的数据质量与治理有效性,成为数据平台团队面临的核心挑战。本文从Kafka消…...
STM32开发中printf重定向的两种实现方法
1. STM32开发中的printf重定向需求解析在嵌入式开发中,调试信息的输出是开发过程中不可或缺的一环。对于STM32这类ARM Cortex-M系列微控制器而言,标准库中的printf函数默认是无法直接使用的,因为这类设备通常没有像PC那样的标准输出设备。这就…...


