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

图解LeetCode——剑指 Offer 24. 反转链表

一、题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

二、示例

示例:

【输入】 1->2->3->4->5->NULL
【输出】 5->4->3->2->1->NULL

限制:

  • 0 <= 节点个数 <= 5000

三、解题思路

本题给出的数据结构是单向链表,那么链表中的每个节点ListNode只有2个变量,即:

int val】表示当前节点存储的值。
ListNode next】表示当前节点的后置节点的引用。

那么既然是单向链表,我们遍历链表中所有结点的时候,就只能通过调用ListNode.next的方式逐一向后遍历节点,遍历方式当然不是问题的难点,难点是如何进行翻转呢?

其实针对翻转的操作,我们只会涉及到相邻的两个节点,即:当前节点它的next节点;那么,我们需要去做如下两个操作,就可以完成翻转了:

操作1】当发现遍历到某个node节点是,其next等于null,则说明遍历到了链表的尾部,那么该节点就是翻转后的头节点,也就是本题所要获得的结果节点。
操作2】在递归遍历操作之后,执行head.next.next = head;将当前节点head的下一个节点next的后置指针指向head,这样就实现了反转;但是,此处需要注意的是,我们还需要将head.next设置为null,因为这个对于原链表的头节点很重要(因为它变为了新链表的尾节点,其next指针应该被设置为null)

解题思路说完了,我们举例,尝试将Node(1)——>Node(2)——>Node(3)——>Node(4)——>Node(5)这个链表执行翻转操作。具体操作如下图所示:

四、代码实现

class Solution {public ListNode reverseList(ListNode head) {if (head == null || head.next == null) return head; // 凤尾变龙头ListNode result = reverseList(head.next);head.next.next = head; // 翻转链表head.next = null;return result;}
}

 今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

相关文章:

图解LeetCode——剑指 Offer 24. 反转链表

一、题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 二、示例 示例: 【输入】 1->2->3->4->5->NULL 【输出】 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 三、…...

【C语言】“指针的运算”、“指针与数组”

文章目录一、指针运算1.指针 - 整数2.指针-指针3.指针关系运算二、指针与数组三、二级指针四、指针数组完结一、指针运算 指针可以进行整数&#xff0c;指针-指针&#xff0c;还有关系运算&#xff0c;其他的运算会被编译器阻止。 1.指针 - 整数 对指针进行的时候一定要注意不…...

Linux高级命令之查找文件命令

查找文件命令学习目标能够说出查找文件使用的命令1. find命令及选项的使用命令说明find在指定目录下查找文件(包括目录)find命令选项:选项说明-name根据文件名(包括目录名)字查找find命令及选项的效果图:2. find命令结合通配符的使用通配符:是一种特殊语句&#xff0c;主要有星…...

PyCharm+Docker:打造最舒适的深度学习炼丹炉

九、PyCharmDocker&#xff1a;打造最舒适的深度学习炼丹炉 安装docker&#xff1a; 如何在 Ubuntu 22.04 LTS 中安装 Docker 和 Docker Compose https://zhuanlan.zhihu.com/p/547169542 修改Linux硬盘卷标&#xff1a; ntfs文件系统&#xff1a;https://blog.csdn.net/n…...

【mock】手把手带你用mock写自定义接口+mock常用语法

mock自定义接口完整流程 官网语法规范:https://github.com/nuysoft/Mock/wiki/Syntax-Specification 首先: 要有一个项目,我这里是vue3项目,以下从vue3项目搭建开始,已搭建好的请直接看2 1.空目录下新建vue3项目 运行创建项目命令&#xff1a; 在bash中:(文件路径处输入cm…...

2023 年腾讯云服务器CVM快速配置购买教程,新手上云必备!

腾讯云服务器快速配置购买教程是新手必备的上云教程。主机教程网在本文中以腾讯云服务器为例&#xff0c;给大家带来一个完整的、手把手教学的服务器购买流程。助力快速完成服务器的购买、配置、以及网站的搭建&#xff0c;给新手节省宝贵的时间&#xff0c;避免采坑&#xff0…...

opencv显示图像

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...

C++:类和对象(中)

文章目录1 类的6个默认成员函数2 构造函数2.1 概念2.2 特性3 析构函数3.1 概念3.2 特性4 拷贝构造函数4.1 概念4.2 特性5 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前置重载和后置重载6 日期类的实现7 const成员8 取地址及const取地址操作符重载1 类的6个默认成员函…...

53. 最大子数组和

文章目录题目描述暴力法动态规划法分治法参考文献题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&…...

基于Java+SpringBoot+SpringCloud+Vue前后端分离医院管理系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《S…...

QT基础入门【环境配置篇】linux桌面QT开发环境的构建以及问题解决

目录 一、下载QT的安装包 二、安装 1.执行以下命令开始安装 2.选择配置 三、启动...

Linux系统之部署企业内部静态导航页

Linux系统之部署企业内部静态导航页 一、本次实践目的二、检查本地系统环境1.检查系统版本2.检查内核版本三、下载静态导航页资源包1.创建下载目录2.下载资源包四、安装apache服务1.安装httpd2.复制网页文件3.重启httpd服务4.检查httpd服务状态五、访问导航页六、修改导航页网站…...

2023备战金三银四,Python自动化软件测试面试宝典合集(四)

接上篇&#xff1a;11、点击塞钱进红包&#xff0c;选择使用新卡付款&#xff0c;按照流程添加新卡&#xff0c;此时同样需要考虑金额>新卡余额&#xff0c;金额<新卡余额&#xff0c;金额新卡余额三种情况12、使用指纹确认付款(正确的/不正确的指纹)13、使用密码确认付款…...

算法训练营 day43 动态规划 不同路径 不同路径 II

算法训练营 day43 动态规划 不同路径 不同路径 II 不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达…...

关联查询的SQL有几种情况

1、内连接&#xff1a;inner join … on 结果&#xff1a;A表 ∩ B表 2、左连接&#xff1a;A left join B on &#xff08;2&#xff09;A表全部 &#xff08;3&#xff09;A表- A∩B 3、右连接&#xff1a;A right join B on &#xff08;4&#xff09;B表全部 &#…...

查缺补漏三:事务隔离级别

什么是事务&#xff1f; 事务就是一组操作的集合&#xff0c;事务将整组操作作为一个整体&#xff0c;共同提交或者共同撤销 这些操作只能同时成功或者同时失败&#xff0c;成功即可提交事务&#xff0c;失败就执行事务回滚 MySQL的事务默认是自动提交的&#xff0c;一条语句执…...

没有她的通讯录(C语言实现)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;夏目的C语言宝藏 &#x1f4ac;总结&#xff1a;希望你看完之…...

Spring Security 从入门到精通

前言 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Spr…...

微信小程序Springboot vue停车场车位管理系统

系统分为用户和管理员两个角色 用户的主要功能有&#xff1a; 1.用户注册和登陆系统 2.用户查看系统的公告信息 3.用户查看车位信息&#xff0c;在线预约车位 4.用户交流论坛&#xff0c;发布交流信息&#xff0c;在线评论 5.用户查看地图信息&#xff0c;在线导航 6.用户查看个…...

看完这篇 教你玩转渗透测试靶机vulnhub——Hack Me Please: 1

Vulnhub靶机Hack Me Please: 1渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;漏洞利用③&#xff1a;获取反弹shell&#xff1a;④&#x…...

3个维度重新定义Cursor使用体验:如何突破免费试用限制

3个维度重新定义Cursor使用体验&#xff1a;如何突破免费试用限制 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

西门子S7-1200 PLC编程避坑指南:从振荡电路到浮点数计算,新手最常犯的5个错误

西门子S7-1200 PLC编程实战避坑手册&#xff1a;从逻辑陷阱到数据精度 第一次接触西门子S7-1200 PLC编程时&#xff0c;我对着闪烁的指示灯发呆了半小时——明明按照手册写的梯形图&#xff0c;为什么定时器就是不工作&#xff1f;后来才发现是TON指令的PT参数单位理解错误。这…...

PCL圆柱拟合进阶:从模型参数到完整轴线的精准计算

1. PCL圆柱拟合的核心挑战与工业需求 在工业测量和逆向工程领域&#xff0c;圆柱体是最常见的几何特征之一。想象一下汽车发动机的活塞杆、液压缸的活塞筒&#xff0c;或者机械臂的旋转轴&#xff0c;这些关键部件都需要精确的圆柱几何参数。PCL&#xff08;Point Cloud Librar…...

三步彻底解决Zotero中文文献管理的三大难题:茉莉花插件完整指南

三步彻底解决Zotero中文文献管理的三大难题&#xff1a;茉莉花插件完整指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 你是否…...

【LangChain】 入门:从分步调用到链式编程

LangChain 入门&#xff1a;从分步调用到链式编程本文基于一段翻译助手的示例代码&#xff0c;讲解 LangChain 的核心概念、输出解析器的作用&#xff0c;以及普通写法与链式写法的对比。一、LangChain 是什么&#xff1f; 名字拆解缩写含义LangLanguage&#xff08;语言&#…...

本地AI自动化工具monoClaw:让AI直接执行你的命令行指令

1. 项目概述&#xff1a;一个真正为你干活的本地AI自动化工具如果你也厌倦了在聊天窗口和终端之间来回切换&#xff0c;输入一个指令还得等AI生成代码&#xff0c;再手动复制粘贴去执行&#xff0c;那么monoClaw的出现&#xff0c;可能正是你期待的那个转折点。这个由codewithf…...

Bonsai工具库:函数式编程与代码设计模式实战解析

1. 项目概述&#xff1a;当代码遇见禅意最近在GitHub上闲逛&#xff0c;发现一个挺有意思的项目&#xff0c;叫sauravpanda/bonsai。光看名字&#xff0c;你可能以为这是个园艺或者艺术相关的仓库&#xff0c;但实际上&#xff0c;它是一个非常精巧的编程工具库。这个项目名“B…...

淘宝淘金币自动化脚本终极指南:每天节省20分钟,彻底解放双手

淘宝淘金币自动化脚本终极指南&#xff1a;每天节省20分钟&#xff0c;彻底解放双手 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/t…...

3PEAK思瑞浦 TP2262-TSR TSSOP8 运算放大器

特性 供电电压:3V至36V 低供电电流:每通道最大1000A差分输入电压范围至电源轨&#xff0c;可作为比较器工作 输入轨至-Vs&#xff0c;轨到轨输出快速响应:3.5MHz带宽&#xff0c;15V/us斜率&#xff0c;100ns过载恢复时间 低失调电压:-25C时最大2mV-2.5 mV在-40C至85C(最大) -3…...

别再死记硬背关键帧了!用Blender 2.83.9的Rigify,带你拆解走路动画的物理原理(附膝跳问题修复)

别再死记硬背关键帧了&#xff01;用Blender 2.83.9的Rigify&#xff0c;带你拆解走路动画的物理原理&#xff08;附膝跳问题修复&#xff09; 当你第一次尝试用Blender制作走路动画时&#xff0c;是否遇到过这样的困境&#xff1a;明明按照教程一步步设置了关键帧&#xff0c;…...