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

反转链表题目

文章目录

  • 反转链表
    • 题目链接:[在线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,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心&#xff0c…...

【计算机网络】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,路由选择:路由选择指网络层根据特定算法,为数据包从源节点到目…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中&#xff0c;向量运算构成了理解几何结构的基石。叉乘&#xff08;外积&#xff09;与点积&#xff08;内积&#xff09;作为向量代数的两大支柱&#xff0c;表面上呈现出截然不同的几何意义与代数形式&#xff0c;却在深层次上揭示了向量间相互作用的…...