跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

LeetCode 206 反转链表:思路解析与 Java 代码实现

综述由AI生成介绍 LeetCode 206 题反转链表的解法。题目要求将单链表反转并返回新头节点。核心思路是通过迭代方式,维护前驱节点 pre、当前节点 cur 和下一个节点 nxt,逐个修改节点的 next 指针方向。最终返回 pre 作为新的头节点。文章提供了详细的步骤图解说明及完整的 Java 代码实现,适合面试准备。

FlinkHero发布于 2026/3/28更新于 2026/6/1039 浏览
LeetCode 206 反转链表:思路解析与 Java 代码实现

题目描述

LeetCode 206 反转链表

难度:简单
tags:链表、反转

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

示例 1:

**输入:**head = [1,2,3,4,5] 输出:[5,4,3,2,1]

示例 2:

**输入:**head = [1,2] 输出:[2,1]

示例 3:

**输入:**head = [] 输出:[]

题解

主要思路:把链表的箭头方向全部掉头

想象你有一条由若干个节点组成的链表,每个节点都有一个箭头指向下一个节点。

原链表结构为:1 → 2 → 3 → 4 → 5 → null

你的任务就是,把所有的箭头方向都原地掉头,让最后一个节点变成第一个,第一个变成最后一个。

反转后的链表结构为:null ← 1 ← 2 ← 3 ← 4 ← 5

也就是说: 输入:1 → 2 → 3 → 4 → 5 → null 输出:null ← 1 ← 2 ← 3 ← 4 ← 5

不难发现,之前指向 null 的尾结点【5】变成了头结点,之前的头结点变成了指向 null 的尾结点。

而中间的箭头方向反转如何体现?

我们可以单独拎出来一个结点观察一下,对于【3】这个结点,可以发现,【3】的 next 从指向下一个结点【4】,变成了指向上一个结点【2】。

再观察所有的结点,发现 1.除了头结点之外,每个结点的 next 都从指向下一个结点,变成了指向上一个结点。

那么头结点与其他结点有什么不同?

显然,头结点【1】的 next 从指向下一个结点【2】变成了指向 null。 也就是说,2.头结点从指向下一个结点转而指向 null。

代码思路

刚才已经总结出来 2 条结论:

  1. 除头结点之外,每个结点的 next 都从指向下一个结点,变成了指向上一个结点。
  2. 头结点从指向下一个结点变成指向 null。

我们利用这两条结论来组织代码,令当前正在操作的节点为 cur,cur 的下一个结点为 nxt,cur 的上一个结点为 pre。

这里可能会产生一些疑问,头结点【1】的上一个结点 pre 为什么要指向 null?

其实这是为了将刚刚得到的两条结论统一组织成代码。

  1. 除头结点外,每个结点都从指向下一个结点,变成了指向上一个结点。
  2. 头结点从指向下一个结点变成指向 null。

那我们就直接将头结点的上一个结点 pre 指定成 null。

这样每个结点的核心反转代码就可以统一成 cur.next=pre,不用针对头结点另写代码了。

解题步骤如下:

  1. 从头结点开始反转,让 cur 指向头结点,pre 指向 null。(让 cur 从头结点开始遍历,一直遍历到尾结点,可以将每个结点的 next 指向都反转) 也就是:cur=head;pre=null;

遍历的终点是,cur 指向 null

重复第 2、3、4 步

更改完 next 的指向之后,移动 cur 和 pre,让 pre 指向 cur,让 cur 指向事先保存的 nxt 也就是:pre=cur;cur=nxt;

针对每个结点,让 nxt 指向头结点的下一个结点 cur.next,让 next 从指向下一个结点,变成指向上一个节点 pre (nxt 的作用:事先保存 cur 的下一个结点,以免 cur 在改变 next 的指向后,找不到 cur 原先的的下一个结点) 也就是:nxt=cur.next;cur.next=pre;

至此,就完成了链表反转。

代码(Java 版)


  {
     ListNode  {
           ; 
           head; 
         (cur != ) {
               cur.next; 
            cur.next = pre; 
            pre = cur; 
            cur = nxt; 
        }
         pre; 
    }
}
/** * 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; } * } */
class
Solution
public
reverseList
(ListNode head)
ListNode
pre
=
null
// pre 指向前一个节点
ListNode
cur
=
// cur 指向当前节点
while
null
ListNode
nxt
=
// nxt 记录下一个节点
// 让 cur 节点的下一个节点指向 pre
// pre 向前
// cur 向前
return
// 返回反转后的头结点 pre

目录

  1. 题目描述
  2. 题解
  3. 主要思路:把链表的箭头方向全部掉头
  4. 代码思路
  5. 代码(Java 版)
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • macOS 平台 AI CLI 工具安装配置指南:OpenClaw、Gemini CLI、Claude Code
  • Node.js 最新版下载安装与环境配置教程
  • AIGC 大模型系统化学习路径:从理论到工业级实战指南
  • GitHub Copilot vs Cursor vs Codeium 三款 AI 编程工具对比与选择指南
  • FunASR 离线文件转写服务开发指南(实践篇)
  • Python 兼职开发常见方向及零基础入门指南
  • C++多态实现深度剖析:从抽象类约束到虚函数表机制
  • AMD 显卡 llama.cpp Vulkan 后端兼容与优化指南
  • 主流 AI 工具生成 Word 文档指南:功能、场景与实操技巧
  • OpenClaw 对接 QQ 机器人:本地及腾讯云部署方案
  • Git 远程与本地仓库关联指南(含推送冲突解决方案)
  • Git Cola 图形界面工具使用指南:可视化版本控制
  • 双指针算法专题:有效三角形与多数之和
  • OpenClaw 对接 QQ 机器人教程:本地与云端部署
  • Photoshop 集成 ComfyUI AI 绘画功能指南
  • Git 远程仓库同步实战:基础操作与避坑指南
  • 通义万相 2.1 多模态 AI 生成技术与应用场景分析
  • Python 字符串基础:定义、索引、切片及常用方法详解
  • TSPR-WEB-LLM-HIC 四元结构 AI 生成式引擎技术架构解析
  • VirtualBox 搭建 Ubuntu 虚拟机完整实战指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online