• LCR 024. 反转链表 - 力扣(LeetCode)LCR 024. 反转链表 - 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1:[https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg]输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:[https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg]输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[] 提示: * 链表中节点的数目范围是 [0, 5000] * -5000 <= Node.val <= 5000 进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题? 注意:本题与主站 206 题相同: https://leetcode-cn.com/problems/reverse-linked-list/ [https://leetcode-cn.com/problems/reverse-linked-list/]https://leetcode.cn/problems/UHnkqh/

zhe206. 反转链表 - 力扣(LeetCode)​​​​​206. 反转链表 - 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1:[https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg]输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:[https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg]输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[] 提示: * 链表中节点的数目范围是 [0, 5000] * -5000 <= Node.val <= 5000 进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?https://leetcode.cn/problems/reverse-linked-list/

这两题是一样的

首先是三指针解法:

/*** 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) {}* };*/
/*先看题目给的定义格式,有一个val还有next*/
class Solution {
public:ListNode* reverseList(ListNode* head) {
/*传来一个head*///先判断链表为空或者链表数据只有一个的情况if(head==NULL||head->next==NULL)return head;//接下来我们要反转链表,需要用到三个参数,就像我们之前写数组交换数据的时候一样//由于题目中可以看见,最后一个数据为空1->2->3->4->5->NULLstruct ListNode *n1=NULL, *n2=head ,*n3=head->next;while(n2){n2->next=n1;//反转n1=n2;n2=n3;if(n3)n3=n3->next;}/*第一次:1->NULLn1=1,n2=2,n3=3可以看到整个数据往后移动了一位,原本是NULL,1,2第二次:2->1n1=2,n2=3,n3=4第三次:3->2n1=3,n2=4,n3=5注意 这个时候还未触发条件,这里我们就可以看到这时候链表菜反转到3,我们最后传回的也是n1这  个头结点第四次:4->3n1=4,n2=5,n3=NULL第五次:5->4n1=5,n2=NULL,N3=NULL到这里我们就可以看到上面的两个判断条件的原因1.由于最后要反转整个链表,返回的是n1,对于原链表来说,最后一个节点是NULL反过来其实就是NULL->5而我们反转的语句是n2->next=n1所以最后的判断条件即为n2==NULL的时候,循环结束反转2.最后n2==NULL的时候,n3不能再往后了,不然会出现空指针的情况,因为NULL后面没有NULL了所以最后n3需要判断,如果已经为空了就不需要再往后移动了*/return n1;}
};

头插法:

/*** 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) {if(head==NULL||head->next==NULL)return head;//与上面同样的判断struct ListNode *cur=head , *next=head->next , *newhead=NULL;//定义三个指针,我们的目的是将newhead作为一个新的头,通过cur一个个头插while(cur){//同样的还是以cur为空作为循环的判断cur->next=newhead;newhead=cur;cur=next;//这里的判断与上一个解法一样if(next)next=next->next;/*第一次:cur=1,next=2,newhead=NULL将cur->next=newhead------- 1->NULL然后继续往后走 cur=2,next=3依次类推:2->1->NULLcur=3,next=43->2->1->NULLcur=4,next=5这里就可以看出来,如果判断条件是next==NULL,那这时的cur才等于5并且没有插到新链表中所以如果cur作为5也就是最后一个数插到新链表中,那么它在当次循环结束后的值就为NULL即cur==NULL作为循环结束标志*/}return newhead;}
};

大家也可以动手画一画,我不喜欢画图,喜欢脑子里想,虽然我知道这不是个好习惯

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

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

相关文章

Day 6: CNN卷积神经网络 - 计算机视觉的核心引擎

Day 6: CNN卷积神经网络 - 计算机视觉的核心引擎 📚 核心概念(5分钟理解) 什么是CNN卷积神经网络? 核心概念解释: CNN(Convolutional Neural Network): 专门处理具有网格状拓扑结构数据的深度学习模型,特别擅长图像识别 为什么需要: 传统全连接神经网络处理图像时参数量…

MacBook 本地化部署 Dify 指南

Dify 安装前的准备工作 确认系统满足最低配置要求&#xff0c;包括操作系统版本、内存、CPU 和存储空间。 检查是否已安装必要的依赖项&#xff0c;如 Python、Docker 确保网络环境稳定&#xff0c;能够访问所需的软件源或镜像仓库。 获取 Dify 安装包 https://docs.dify.ai…

疫情可视化:基孔肯雅热风险地图实战解析

> 一只白纹伊蚊的飞行半径是100米,而一套WebGIS系统能将疫情防控范围精确到每平方米。 2025年夏季,基孔肯雅热疫情在广东佛山爆发,短短一个月内感染病例占全省95%以上。这种由伊蚊传播的病毒性疾病,以**突发高热、剧烈关节痛和全身皮疹**为特征,患者关节疼痛可能持续数…

【14-模型训练细节】

训练步骤 1、指定输入和输出&#xff0c;即模型定义&#xff1b; 2、指定损失函数和成本函数&#xff1b; 3、指定训练算法&#xff0c;如梯度下降算法&#xff1b;训练细节 损失函数和成本函数用梯度下降算法训练模型 主要是求成本函数的偏导数&#xff0c;使用的是反向传播算…

ConcurrentDictionary 详解:.NET 中的线程安全字典

什么是 ConcurrentDictionary&#xff1f; ConcurrentDictionary<TKey, TValue> 是 .NET Framework 4.0 和 .NET Core/.NET 5 中引入的线程安全字典实现&#xff0c;位于 System.Collections.Concurrent 命名空间。它解决了多线程环境下操作字典时的同步问题&#xff0c…

集成电路学习:什么是URDF Parser统一机器人描述格式解析器

URDF Parser(URDF解析器)是ROS(Robot Operating System,机器人操作系统)中用于解析URDF(Unified Robot Description Format,统一机器人描述格式)文件的工具。URDF是一种基于XML(Extensible Markup Language,可扩展标记语言)规范的格式,用于描述机器人的结构、关节、…

老式大头显示器(CRT)和当前最高分辨率的LED显示器对比

老式 CRT&#xff08;阴极射线管&#xff09;和当前最顶尖的 LED&#xff08;包括 MicroLED / 高端 MiniLED / OLED&#xff09;显示器在画面清晰度极限相关的参数并列分析。1. 分辨率与像素密度指标老式 CRT&#xff08;PC/电视用&#xff09;顶级 LED 显示器&#xff08;2025…

北京JAVA基础面试30天打卡07

1. 缓存三大问题及解决方案问题场景后果常用解决方案缓存穿透请求的数据在缓存和数据库中都不存在&#xff08;恶意攻击或查询异常 ID&#xff09;每次请求都会打到数据库&#xff0c;导致 DB 压力骤增- 缓存空值&#xff08;短期缓存不存在的 key&#xff09;- 布隆过滤器&…

后量子密码学的迁移与安全保障:迎接量子时代的挑战

在当今数字化时代&#xff0c;信息安全无疑是保障个人隐私、企业运营和国家安全的基石。我们依赖密码学来保护敏感信息&#xff0c;从在线银行交易到机密军事通信&#xff0c;从医疗记录的存储到云计算中的数据传输&#xff0c;传统密码学为我们构筑起一道抵御恶意攻击的防线。…

Android 获取 UserAgent (UA) 的三种方式深度解析:差异、风险与最佳实践

引言 在 Android 开发中&#xff0c;获取 UserAgent (UA) 字符串是常见需求&#xff0c;尤其涉及网络请求和 WebView 交互时。开发者通常使用三种方式获取 UA&#xff1a; new WebView(context).getSettings().getUserAgentString()WebSettings.getDefaultUserAgent(context)…

Apache IoTDB 全场景部署:跨「端-边-云」的时序数据库 DB+AI 实战

时序数据正成为现代工业物联网的核心资产,从设备传感器到业务分析,数据需跨越端、边、云多个层级。本文将深入探讨 **Apache IoTDB** 如何实现全场景统一时序数据管理,并融合AI能力实现智能决策。 --- ### 一、为什么需要「端-边-云」协同? 在工业物联网场景中: - **端侧…

某地渣库边坡自动化监测服务项目

1. 项目简介该矿山主要从事稀有金属钽、铌及合金等的研发、生产、销售和进出口业务。具有科学的管理理念、精良的工艺装备、先进的技术水平、高素质的员工队伍等综合优势&#xff0c;已形成钽、铌金属及其合金材料等主要产业格局。公司产品被广泛应用于电子、通讯、航空、航天、…

redis(2)-java客户端使用(IDEA基于springboot)

一、准备工作首先确保&#xff1a;Linux 服务器上已安装并启动 Redis 服务Redis 已配置允许远程连接&#xff08;修改 redis.conf 文件&#xff09;开发环境&#xff08;IDEA&#xff09;已准备好二、Spring Boot 项目配置 Redis1. 添加依赖在pom.xml中添加 Redis 相关依赖&…

解决 vscode 编辑 markdown 文件时退格键/backspace 删除卡顿问题

文章目录发现问题解决问题发现问题 使用 vscode 编辑 markdown 时&#xff0c;发现有时按下退格键 backspace 后等待很久才会生效&#xff0c;卡顿明显 解决问题 从界面左下角的设置图标&#xff0c;打开 vscode 的键盘快捷键设置页面 Keyboard Shortcuts 搜索 backspace 按…

绿巨人VS Code多开项目单独管理每个项目单独使用一个不限制的augment

绿巨人VS Code多开项目单独管理每个项目单独使用一个不限制的augment 绿巨人VS前言 在AI辅助编程时代&#xff0c;Augment Code作为一款强大的代码助手工具&#xff0c;为开发者提供了智能代码补全、代码生成等功能。然而&#xff0c;免费版本的使用限制&#xff08;通常为每月…

Java 之抽象类和接口

一 、抽象类 1.1 、什么是抽象类&#xff1f; 就是当一个类不能描述具体的对象时&#xff0c;那么这个类就可以写成抽象类。比如说 Animal &#xff0c;我们知道 Animal 不能非常清楚的描述一个具体的动物&#xff0c;所以可以把 Animal 写成抽象类。还有就是我们知道父类中的方…

【运维进阶】WEB 服务器

WEB 服务器 WEB 服务器简介 Web 服务器&#xff08;Web Server&#xff09;是指一种接收客户端&#xff08;如浏览器&#xff09;发送的 HTTP 请求&#xff0c;并返回网页内容或资源的程序或设备。它是万维网&#xff08;WWW&#xff09;的核心组成部分。 Web 服务器的主要功能…

LLM(大语言模型)的“幻觉”本质原因

LLM(大语言模型)的“幻觉”本质原因 LLM(大语言模型)的“幻觉”(生成与事实不符但模型自信输出的内容)本质上是其作为概率统计模型的底层机制与训练、推理过程中多重限制共同作用的结果。从模型内部逻辑、训练机制到推理环节 一、底层机制:基于“统计关联”而非“真实…

java基础(六)jvm

1. JVM内存的五大核心区域 一个帮手想象JVM运行程序时&#xff0c;需要划分不同区域干不同的事。主要分为这五大块&#xff0c;外加一个特殊帮手&#xff1a;1.1 程序计数器 (Program Counter Register) - 你的“任务进度条”干啥的&#xff1a; 专门记录当前线程执行代码执行…

计算机网络:什么是AD域

什么是AD域? AD域(Active Directory Domain)是微软基于Active Directory(活动目录) 技术构建的网络管理架构,用于集中管理网络中的用户、计算机、设备、权限等资源。它是企业级网络环境中实现身份认证、资源共享和安全控制的核心组件。 AD域的核心功能与作用 集中化身份…