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

力扣Hoot100-反转链表

LeetCode 刷题反转链表:递归解法(简洁优雅的 O (n) 实现)

反转链表是链表类最基础也最核心的面试题,递归解法以「代码极简、逻辑优雅」著称,是面试中展示递归思维的经典案例。本文详解反转链表的尾递归解法,从思路到代码逐行拆解,帮你彻底理解递归反转的核心逻辑。

一、题目描述

反转单链表给你单链表的头节点head,请你反转链表,并返回反转后的链表的头节点。

示例

输入:1 -> 2 -> 3 -> 4 -> 5 -> null输出:5 -> 4 -> 3 -> 2 -> 1 -> null

链表节点定义

java

运行

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */

二、解题思路:尾递归反转(核心)

递归的核心是「拆解问题 + 终止条件」,反转链表的尾递归思路可总结为:

  1. 问题拆解:反转以cur为当前节点的链表,等价于「先反转cur.next的链表,再将curnext指向前驱节点pre」;
  2. 终止条件:当cur == null时,说明已遍历到链表末尾,此时pre就是反转后的新头节点;
  3. 递归过程:用temp暂存cur.next(防止链表断裂),将cur.next指向pre(完成当前节点的反转),再递归处理temp(下一个节点)和cur(新的前驱节点)。

思路可视化(以 1->2->3 为例)

plaintext

初始:cur=1, pre=null 1. 暂存 temp=cur.next=2 → cur.next=pre=null → 递归处理(temp=2, pre=1) 2. 暂存 temp=cur.next=3 → cur.next=pre=1 → 递归处理(temp=3, pre=2) 3. 暂存 temp=cur.next=null → cur.next=pre=2 → 递归处理(temp=null, pre=3) 4. cur=null,返回 pre=3(新头节点) 最终链表:3->2->1->null

三、完整代码实现

class Solution { // 主方法:调用递归函数,初始当前节点为head,前驱节点为null public ListNode reverseList(ListNode head) { return reverse(head, null); } // 递归函数:参数为当前节点cur、前驱节点pre public ListNode reverse(ListNode cur, ListNode pre) { // 终止条件:cur为null,返回pre(反转后的新头节点) if (cur == null) { return pre; } // 1. 暂存cur.next,防止链表断裂 ListNode temp = cur.next; // 2. 反转当前节点:cur的next指向pre cur.next = pre; // 3. 递归处理下一个节点(temp),前驱节点更新为cur return reverse(temp, cur); } }
http://www.jsqmd.com/news/439224/

相关文章:

  • 北京万腾老酒回收丨30年回收老品牌,本地行业标杆,资质齐全,免费鉴定 - 宁夏壹山网络
  • 深聊2026年振动盘,上海哪家供应商更靠谱 - 工业品网
  • 闲置卡券不浪费!支付宝立减金回收技巧与使用指南 - 团团收购物卡回收
  • 将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
  • 曲线和曲面质量:G0、G1、G2、G3
  • .NET 中的新增功能系列文章—— .NET MAUI 中的新增功能
  • 2026年湖南有实力的代理记账专业公司推荐,服务区域覆盖长沙 - mypinpai
  • 震撼!CloseAI终于变回OpenAI了!GPT-OSS来了,这次真的不一样了
  • 用Blender制作C919飞机:从层级关系到3D建模的实战指南
  • 破解无锡公司注册痛点:‘无忧注册四力模型’如何让创业第一步就赢? - 速递信息
  • 【深度解析】公司注销服务:从合规逻辑到高效实践的全维度科普 - 速递信息
  • 电商、社媒必看:如何高效使用动态代理IP实现多账号管理
  • 瑞祥商联卡用不上?这样回收超划算 - 畅回收小程序
  • 2026年资质齐全的玻璃外墙清洗公司怎么选,看看排名就知道 - myqiye
  • C++底层机制(3):move / forward / 完美转发 一张图讲透
  • 2026四川乡村旅游品牌排名,东越天池凭特色仙人掌产品上榜 - 工业设备
  • Apache SeaTunnel 要不要升?怎么升?一文讲透 2.x 升级 7 个关键点
  • 2026年京津冀地区门墙柜一体定制专业供应商排名,哪家更靠谱? - 工业推荐榜
  • Flink REST API 不用进 Web UI,也能查作业、打 Checkpoint、触发 Savepoint、看 Watermark
  • 2026年中国房产继承律师电话查询推荐:解决继承难题的帮手 - 品牌推荐
  • 测试用的
  • 2026年诚信的轻质仿石幕墙板厂家优质供应商推荐榜 - 品牌鉴赏师
  • 【鸿蒙游戏技术分享 第78期】游戏无法登录,game service kit返回报错1002000001 system internal error
  • 深聊校园联合招聘,云南立才企业管理有限公司优势知多少 - 工业品网
  • 什么洗发水好用?2026年热门洗护品牌深度测评 - 包罗万闻
  • 2026年3月立式内圆磨厂家推荐:行业测评与选择指南 - 品牌鉴赏师
  • 2026深圳市殡仪服务企业优质推荐 专业靠谱的治丧服务之选 - 深度智识库
  • 2026年天津婚姻纠纷律师电话查询推荐:服务特色与选择建议 - 品牌推荐
  • 2026年中国房产继承律师电话查询推荐:精选推荐与使用指南 - 品牌推荐
  • 2026年主流AI财务软件全景盘点与选型建议 - 速递信息