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

【LeetCode刷题日记】:反转链表(面试基础考察)

个人主页北极的代码欢迎来访作者简介java后端学习者❄️个人专栏苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺反转链表题目背景LeetCode206给你单链表的头节点head请你反转链表并返回反转后的链表。示例 1输入head [1,2,3,4,5]输出[5,4,3,2,1]示例 2输入head [1,2]输出[2,1]示例 3输入head []输出[]提示链表中节点的数目范围是[0, 5000]-5000 Node.val 5000进阶链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题双指针解法/ 双指针 class Solution { public ListNode reverseList(ListNode head) { ListNode prev null; ListNode cur head; ListNode temp null; while (cur ! null) { temp cur.next;// 保存下一个节点 cur.next prev; prev cur; cur temp; } return prev; } }题目解析如果再定义一个新的链表实现链表元素的反转其实这是对内存空间的浪费。其实只需要改变链表的next指针的指向直接将链表反转 而不用重新定义一个新的链表如图所示:我们只需要改变链表的next指针指向首先定义一个cur指针指向头结点再定义一个pre指针初始化为null。然后就要开始反转了首先要把 cur-next 节点用tmp指针保存一下也就是保存一下这个节点。不然会导致数据丢失为什么要保存一下这个节点呢因为接下来要改变 cur-next 的指向了将cur-next 指向pre 此时已经反转了第一个节点了。接下来就是循环走如下代码逻辑了继续移动pre和cur指针。最后cur 指针已经指向了null循环结束链表也反转完毕了。 此时我们return pre指针就可以了pre指针就指向了新的头结点。我们把cur的指向改变指向pre然后我们分别继续移动这两个指针cur的位置给pretemp的位置给cur都相当于是向后移动一次为什么先移动pre而不是先移动cur如果是先移动cur那么cur的值就被temp覆盖了pre的位置就改变不了了。递归解法// 递归 class Solution { public ListNode reverseList(ListNode head) { return reverse(null, head); } private ListNode reverse(ListNode prev, ListNode cur) { if (cur null) { return prev; } ListNode temp null; temp cur.next;// 先保存下一个节点 cur.next prev;// 反转 // 更新prev、cur位置 // prev cur; // cur temp; return reverse(cur, temp); } }解法解析递归的逻辑就是双指针的逻辑只是写起来的代码更简单些在这里我们定义了两个方法为什么需要两个方法因为我们要实现递归需要传递两个参数pre cur但是题目只给出了一个head因此reverseList(head)负责启动递归里面调用reverse(null, head)真正递归逻辑在reverse(prev, cur)里。具体流程假设原链表plaintext1 → 2 → 3 → 4 → 5 → null初始调用reverseList(head);进入reverse(null, 1);此时plaintextprev null cur 1第 1 层递归reverse (null, 1)temp cur.next 2cur.next prev →1 → null递归调用reverse(1, 2)链表现在plaintextnull ← 1 2 → 3 → 4 → 5 → null第 2 层递归reverse (1, 2)temp 3cur.next 1 →2 → 1调用reverse(2, 3)plaintextnull ← 1 ← 2 3 → 4 → 5 → null第 3 层递归reverse (2, 3)temp 43 → 2调用reverse(3,4)plaintextnull ← 1 ← 2 ← 3 4 →5 →null第 4 层递归reverse (3,4)temp 54→3调用reverse(4,5)第 5 层递归reverse (4,5)temp null5→4调用reverse(5, null)plaintextnull ←1 ←2 ←3 ←4 ←5最后一层cur null开始返回java运行if (cur null) return prev;这里 prev 是5然后一层层返回 5 → 最终回到 reverseList返回 5链表反转完成总结递归就是每次改变循环的位置替代循环reverse 就是保存下一个节点把当前节点指向前一个递归往后走走到 null 时prev 就是新头节点当前节点指向前一个然后递归下一组直到走到头最后那个节点就是新头。

相关文章:

【LeetCode刷题日记】:反转链表(面试基础考察)

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

ThorUI-uniapp插件生态解析:如何扩展你的开发能力

ThorUI-uniapp插件生态解析:如何扩展你的开发能力 【免费下载链接】ThorUI-uniapp dingyong0214/ThorUI-uniapp: 是一个基于 ThorUI 的 UniApp UI 库,适合用于 UniApp 开发中的 UI 设计和实现。 项目地址: https://gitcode.com/gh_mirrors/th/ThorUI-u…...

OpenClaw 报错大全:2026 年我踩过的 12 个坑 + 完整解决方案

上周 Agent Skills 生态突然爆了,OpenClaw 一夜之间成了标配工具。我也跟风装了一个,结果第一天就报了 5 个错,折腾到凌晨两点。后来几天陆续又踩了一堆坑,索性把所有报错都记下来,整理成这篇文章。如果你正在用 OpenC…...

如何用 Splinter 在 5 分钟内完成第一个 Web 自动化测试

如何用 Splinter 在 5 分钟内完成第一个 Web 自动化测试 【免费下载链接】splinter splinter - python test framework for web applications 项目地址: https://gitcode.com/gh_mirrors/sp/splinter Splinter 是一款强大的 Python Web 应用测试框架,能帮助…...

基于Pyright配置完全指南:命令行、配置文件与语言服务器设置详解

基于Pyright配置完全指南:命令行、配置文件与语言服务器设置详解 【免费下载链接】basedpyright pyright fork with various type checking improvements, improved vscode support and pylance features built into the language server 项目地址: https://gitco…...

Speakeasy与Google Authenticator深度集成:QR码生成与扫描全流程

Speakeasy与Google Authenticator深度集成:QR码生成与扫描全流程 【免费下载链接】speakeasy **NOT MAINTAINED** Two-factor authentication for Node.js. One-time passcode generator (HOTP/TOTP) with support for Google Authenticator. 项目地址: https://g…...

深入解析SimpleScreenRecorder的OpenGL录制技术:游戏录制终极解决方案

深入解析SimpleScreenRecorder的OpenGL录制技术:游戏录制终极解决方案 【免费下载链接】ssr SimpleScreenRecorder, a screen recorder for Linux 项目地址: https://gitcode.com/gh_mirrors/ss/ssr SimpleScreenRecorder是一款功能强大的Linux屏幕录制工具&…...

深入Minoca OS内核架构:模块化设计与驱动模型解析

深入Minoca OS内核架构:模块化设计与驱动模型解析 【免费下载链接】os Minoca operating system 项目地址: https://gitcode.com/gh_mirrors/os1/os Minoca OS作为一款轻量级操作系统,其内核架构采用高度模块化设计,结合灵活的驱动模型…...

Zrythm自动化功能完全解析:从入门到精通

Zrythm自动化功能完全解析:从入门到精通 【免费下载链接】zrythm a highly automated and intuitive digital audio workstation - official mirror 项目地址: https://gitcode.com/gh_mirrors/zr/zrythm Zrythm是一款高度自动化和直观的数字音频工作站&…...

Zrythm未来路线图:AI集成、云端协作与下一代音频技术

Zrythm未来路线图:AI集成、云端协作与下一代音频技术 【免费下载链接】zrythm a highly automated and intuitive digital audio workstation - official mirror 项目地址: https://gitcode.com/gh_mirrors/zr/zrythm Zrythm作为一款高度自动化且直观的数字音…...

Condition底层机制剖析:多线程等待与通知机制 _

在使用Lock之前,使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实现等待/通知模式。 Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者…...

React Native 项目重构利器:使用 react-native-rename 快速迁移应用品牌

React Native 项目重构利器:使用 react-native-rename 快速迁移应用品牌 【免费下载链接】react-native-rename Rename react-native app with just one command 项目地址: https://gitcode.com/gh_mirrors/re/react-native-rename react-native-rename 是一…...

综合能源系统多时间尺度优化调度!诸多创新点

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

【源-荷-储协同互动】考虑源-荷-储协同互动的主动配电网优化调度研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

python statistics

# Python statistics模块:一个被低估的数据分析工具 很多人第一次接触Python数据分析时,往往会直奔pandas或numpy而去,这当然没错。但有时候,我们需要的只是简单的统计计算,比如算个平均数、中位数,或者看看…...

docker相关知识和优化

关于dockerfile常用命令对比 CMD RUN ENTRYPOINT RUN是构建时运行的命令 CMD ENTRYPOINT是运行时执行的命令 不同点在于 docker run 的参数 会直接替换CMD里命令 而 ENTRYPOINT 是直接追加在命令后 所以对于不想影响格式 固定执行的命令 使用 ENTRYPOINT 再通过ENTRYPOIN…...

python random

# Python 的 random 模块:不只是“随机”那么简单 很多人第一次接触 Python 的 random 模块,大概都是在写猜数字游戏的时候。输入几行代码,屏幕上跳出一个随机数,感觉像是给程序注入了某种“不确定的灵魂”。但如果你认为 random …...

python math

# 关于Python的深拷贝,你可能需要知道这些 在Python里处理数据时,经常会遇到需要复制对象的情况。这时候很多人会直接使用赋值操作,但很快就会发现事情没那么简单。比如你有一个列表,里面嵌套了另一个列表,当你修改嵌套…...

Docker-存储驱动配置

devicemapper驱动devicemapper 是 Linux 内核中的一个框架,它可以将块设备(如磁盘、分区、文件)映射成虚拟的块设备。Docker 使用它来为每个容器提供一个独立的、隔离的文件系统。 direct-lvm 和 loop-lvm 是 devicemapper 驱动在 Docker 中实…...

Youtu-2B开源部署教程:腾讯优图LLM一键运行实践

Youtu-2B开源部署教程:腾讯优图LLM一键运行实践 1. 项目简介与核心价值 Youtu-2B是腾讯优图实验室推出的轻量化大语言模型服务,基于Tencent-YouTu-Research/Youtu-LLM-2B模型构建。这个模型虽然体积小巧,但在多个关键任务上表现出色&#x…...

通义千问3-VL-Reranker-8B多场景落地:生物医药论文+实验图+临床视频

通义千问3-VL-Reranker-8B多场景落地:生物医药论文实验图临床视频 多模态重排序服务 Web UI,支持文本、图像、视频的混合检索与排序。 在生物医药领域,研究人员每天需要处理海量的学术论文、实验图像和临床视频。传统的关键词搜索往往难以精准…...

PowerPaint-V1 Gradio与LangChain集成:智能图像处理流程自动化

PowerPaint-V1 Gradio与LangChain集成:智能图像处理流程自动化 1. 引言 你有没有遇到过这样的情况:需要批量处理一批图片,每张图片都需要进行不同的修复操作?比如有些需要去掉水印,有些需要添加特定物体,…...

OpCore-Simplify智能自动化:黑苹果配置的技术解决方案

OpCore-Simplify智能自动化:黑苹果配置的技术解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是技术爱好者面临的重…...

PyTorch 2.8镜像生产环境:Nginx+FastAPI+PyTorch视频生成服务上线指南

PyTorch 2.8镜像生产环境:NginxFastAPIPyTorch视频生成服务上线指南 1. 镜像环境概述 PyTorch 2.8深度学习镜像是一个专为生产环境优化的完整解决方案,特别适合需要稳定运行视频生成服务的场景。这个镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&am…...

开源模型社区共建实践:雯雯的后宫-Z-Image用户反馈机制与CSDN技术文档协作模式

开源模型社区共建实践:雯雯的后宫-Z-Image用户反馈机制与CSDN技术文档协作模式 1. 项目背景与价值 雯雯的后宫-造相Z-Image-瑜伽女孩是一个专注于生成瑜伽主题图片的开源模型,基于Z-Image-Turbo的LoRA版本开发。这个项目不仅提供了高质量的文生图能力&…...

像素幻梦·创意工坊多场景落地:游戏开发、教育课件、社交媒体配图生成

像素幻梦创意工坊多场景落地:游戏开发、教育课件、社交媒体配图生成 1. 像素艺术的新纪元 在数字创作领域,像素艺术正经历一场前所未有的复兴。像素幻梦创意工坊(Pixel Dream Workshop)作为新一代AI像素艺术生成工具,正在改变创作者的工作方…...

丹青识画零基础上手:无编程经验也能操作的水墨AI交互流程

丹青识画零基础上手:无编程经验也能操作的水墨AI交互流程 1. 认识丹青识画:科技与艺术的完美融合 丹青识画是一款让人惊艳的智能影像识别系统,它用最前沿的AI技术来解读图片内容,然后用中国传统书法和水墨画风格来呈现识别结果。…...

造相-Z-Image-Turbo LoRA镜像合规性:符合中国AI生成内容标识与内容安全要求

造相-Z-Image-Turbo LoRA镜像合规性:符合AI生成内容标识与内容安全要求 1. 项目概述与核心价值 造相-Z-Image-Turbo LoRA镜像是一个基于先进AI技术的图片生成Web服务,专门为需要高质量图像生成的用户设计。这个服务不仅提供了强大的图像生成能力&#…...

魔兽争霸3帧率终极优化指南:从60到240帧的完整解决方案

魔兽争霸3帧率终极优化指南:从60到240帧的完整解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 【问题诊断:你的魔兽争…...

03、数据结构与算法--单向链表

一种比顺序表稍微复杂些的结构... 一、认识链表 1、基本结构 链表是一个个结点构成的,就像火车 顺序表可以通过get方法(传入下标)来获取表,因为它们的地址是连续的 与顺序表不同的是,链表的物理存储不连续,要获取某个结点的话不…...