【算法】反转链表
难度:简单
题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例:
示例1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例2:
输入:head = []
输出:[]
提示:
● 链表中节点的数目范围是 [0, 5000]
● -5000 <= Node.val <= 5000
解题思路:
解这道题,关键是理解链表节点的连接关系以及如何通过改变节点的next指针来实现链表的反转。 关键的一点是先了解什么是链表,如果这个都不了解,肯定没法做出来。
- 初始化:定义三个指针,prev(前一个节点)、curr(当前节点,初始为头节点)和next(下一个节点),用于在反转过程中跟踪和修改节点的连接关系。
- 迭代:使用循环遍历链表,直到当前节点curr变为null,表示到达链表尾部。
- 在每一轮迭代开始时,先保存当前节点的下一个节点到next。
- 然后,改变当前节点的next指针,使其指向前一个节点prev。
- 接着,将curr和prev向前推进一步,即prev = curr,curr = next。
- 处理头节点:遍历结束后,原来的尾节点将成为新的头节点,而原来的头节点将成为新的尾节点。因此,prev将指向新的头节点。
JavaScript实现:
/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val = (val===undefined ? 0 : val)* this.next = (next===undefined ? null : next)* }*/
/*** @param {ListNode} head* @return {ListNode}*/
function reverseList(head) {let prev = null; // 前一个节点let curr = head; // 当前节点while (curr !== null) {let next = curr.next; // 保存当前节点的下一个节点curr.next = prev; // 将当前节点指向前一个节点,完成一次反转prev = curr; // 前一个节点向后移动curr = next; // 当前节点向后移动}return prev; // 最终prev会指向原链表的尾节点,即新链表的头节点
}
相关文章:
【算法】反转链表
难度:简单 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例: 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2: 输入:head [] 输出…...
DevEco Studio No device 无法识别 usb 设备 - 鸿蒙
DevEco Studio IDE 版本与手机系统版本升级后出现了 USB 连接设备后 IDE 无法识别 no device 的情况出现; 解决办法 首先,确定当前 DevEco Studio 的 IDE 版本与移动设备的大版本保持一致; 其次,在版本相互匹配的情况下,查看移动设备是否开启了开发者模式与 USB 调试,具体步骤…...
WebRTC API接口教程:实现高效会议的步骤?
WebRTC api接口教程如何使用?WebRTC api接口的功能? WebRTC无需中间服务器即可传输音视频流,为视频会议、在线教育等应用提供了强大的支持。AokSend将详细介绍如何利用WebRTC API接口实现高效会议的步骤。 WebRTC API接口教程:获…...
MinIO - 服务端签名直传(前端 + 后端 + 效果演示)
目录 开始 服务端签名直传概述 代码实现 后端实现 前端实现 效果演示 开始 服务端签名直传概述 传统的,我们有两种方式将图片上传到 OSS: a)前端请求 -> 后端服务器 -> OSS 好处:在服务端上传,更加安全…...
使用getopt处理参数
文章目录 使用getopt处理参数1. shift 命令1.1 删除一个参数1.2 删除多个参数1.3 多次执行 shift 参数1.4 参数解析示例1.5 优化处理1.6 问题处理 2. getopt 命令2.1 常用参数及示例2.2 脚本参数优化示例2.3 参数校验 3. 示例展示4. eval 命令4.1 示例示例 1示例 2示例 3示例 4…...
图像搜索技术在司法证据分析中的应用:思通数科大模型的创新实践
引言 在司法侦查过程中,图像和视频证据的分析对于案件的侦破至关重要。随着人工智能技术的快速发展,图像搜索技术已成为司法领域的关键工具。本文将探讨如何结合思通数科的大模型,利用图像搜索技术对案件中的图片或视频证据进行深度分析&…...
python使用多进程,传入多个参数?
先展示一下我的多进程代码: def process_image(image_path_list):# 获取模板以及类别名template_feature {}template_image cv2.imread(image_path_list)template_feature[curr_template_name] template_imageinput_image cv2.imread(img)template_feature[inp…...
李彦宏: 开源模型是智商税|马斯克: OpenAI 闭源不如叫 CloseAI
在 2024 年世界人工智能大会(WAIC 2024)上,百度创始人、董事长兼首席执行官李彦宏发表对开源模型的评价。 李彦宏认为:开源模型实际上是一种智商税,而闭源模型才是人工智能(AI)行业的未来。 马…...
怎么参与场外期权?场外期权交易要注意什么?
今天带你了解怎么参与场外期权?场外期权交易要注意什么?场外期权(OTC Options)是指在交易所之外进行的期权交易。与场内期权(交易所挂牌交易)不同,场外期权交易由交易双方私下协商确定合约条款&…...
Postman脚本炼金术:高级数据处理的秘籍
🤖 Postman脚本炼金术:高级数据处理的秘籍 Postman不仅是API测试的强大工具,它的脚本功能同样能够在数据处理方面大放异彩。无论是在请求之前设置环境,还是测试后验证结果,Postman的脚本都能提供强大的数据处理能力。…...
MySQL字符串相关数据处理函数
目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写:upper() 转小写:lower() 虽然MySQL不严格区分大小写,但是我们还是需要掌握这种大小写的操作以方便学习其他…...
最近查看了一些批处理文件的写法,整理了一些基础的命令符,大佬勿喷
1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。 2. 命令 表示不显示后面的命令,但是会显示结果 3.Goto和: 命令 :定义标签,goto跳转到标签 4.Rem ::注释命令 ::不显示不执行,rem显示不执行 5.Pause 命令 暂停命…...
解决 Yarn 运行时的 Node.js 版本问题:一个详尽的指南
引言 Yarn 是一个流行的 JavaScript 包管理器,它与 Node.js 紧密集成,用于管理项目依赖。然而,在开发过程中,开发者可能会遇到 Node.js 版本不兼容的问题,这会导致 Yarn 运行时出错。本文将提供一个详细的指南&#x…...
SQL基础-DQL 小结
SQL基础-DQL 小结 学习目标:学习内容:SELECTFROMWHEREGROUP BYHAVINGORDER BY运算符ASC 和 DESC 总结 学习目标: 1.理解DQL(Data Query Language)的基本概念和作用。 2.掌握SQL查询的基本语法结构,包括SEL…...
冒泡排序与其C语言通用连续类型排序代码
冒泡排序与其C语言通用连续类型排序代码 冒泡排序冒泡排序为交换排序的一种:动图展示:冒泡排序的特性总结:冒泡排序排整型数据参考代码(VS2022C语言环境): 冒泡排序C语言通用连续类型排序代码对比较的方式更…...
Python爬虫并输出
1. Python爬虫并输出示例 下面是一个使用Python编写的简单网络爬虫示例,该爬虫将抓取某个网页(例如,我们假设为https://example.com,但请注意实际使用时我们需要替换为一个真实且允许抓取的网站)的标题(Ti…...
交叉熵损失函数的使用目的(很肤浅的理解)
第一种使用方法 import torch from torch import nn # Example of target with class indices loss nn.CrossEntropyLoss() input torch.randn(3, 5, requires_gradTrue) target torch.empty(3, dtypetorch.long).random_(5) output loss(input, target) output.backward(…...
MySQL:TABLE_SCHEMA及其应用
MySQL TABLE_SCHEMA及其应用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/ar…...
【MySQL】4.MySQL 的数据类型
MySQL 的数据类型 一.数据类型分类在这里插入图片描述二.注意点1.char VS varchar2.datetime VS timestamp3.enum 和 set 的使用方法 一.数据类型分类 二.注意点 1.char VS varchar char 的意义是直接开辟固定大小的空间,浪费磁盘空间,但是效率高varcha…...
STM32中断(NVIC和EXIT)
CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240个外部中断,并且具有 256 级的可编程中断设置。但STM32 并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有 76 个中断,包括16 个内核中断和 60 个可屏蔽中断&am…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
