LeetCode反转链表问题(迭代解法+递归解法)

力扣【LeetCode】—— 旋转数组、链表反转【java】 文章目录旋转数组链表反转 旋转数组 题目链接:https://leetcode-cn.com/problems/rotate-array/ 题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: [1,2,3,4,5,6,7] 和 k = 3 结果: [5,6,7,1,2,3,4] 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。    要求使用空间复杂度为 O(1) 的 原地 算法。 解法一: 暴力解决 该解决方案虽然满足题意中的空间复杂度条件 阅读详情

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

以下为迭代解法:

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode cur = head;
        while(cur != null){
        ListNode tempNode = cur.next;
        cur.next = prev;
        prev = cur;
        cur = tempNode;
    }
    return prev;
}

以下为递归解法:

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null || head.next == null){
        return head;
        ListNode cur = reverseList(head.next);
        head.next.next = head;
        head.next = null;
   		return cur;
}
【链表】反转链表 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。 阅读详情

相关推荐

LeetCode 25 - K 个一组翻转链表

这道题是一个典型的链表操作题,考察我们对链表的精确操作,包括反转链表、分组处理、递归和迭代的结合应用等。还可以通过变体问题延伸到优先队列操作、归并、分块等,这使得它成为面试中的高频考题之一。通过对链表反转操作的熟悉,配合经典模板化实现,可以快速应对链表转化类问题,并高效解决工程中复杂数据结构操作场景。个节点一组进行翻转,并返回翻转后的链表。(链表长度 / k)

互联网架构师笔记 1364

如何逆置一个单链表(两种方法)?

在做关于单链表的一些算法题的时候,往往需要将单链表逆置后操作更加方便,但是一般说起来逆置,常用循环遍历单链表,使用头插法再次创建一个单链表实现逆置,但是这样不仅有点浪费存储空间,而且还容易搞混,那么如果要求空间复杂度为O(1)的话,那么就更不能使用头插法实现逆置了。 这时可以采用特定的算法实现单链表逆置,它的思想大概是这样的: 从头到尾扫描单链表,通过特定的手段使后面的一个结点依次指向前面的一个结点,这样,一个循环下去,那么这个单链表就实现了逆序操作。 即从 A---->A---->A----

西小庄村高伟 的博客 1万+

Kaggle时间序列竞赛金牌方案解析与实战指南

本文深度解析了Kaggle时间序列竞赛的金牌方案,揭示了其成功不仅依赖先进模型,更在于系统工程思维。文章系统阐述了从数据理解、特征工程到模型集成与后处理的全流程,并重点剖析了分层建模、自定义损失函数、时序交叉验证等核心技巧,为参赛者提供了从理论到实战的完整指南。

weixin_29196315的博客 355

206. 反转链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? ...

Umbrella Corporation 8983

从Stereo-seq原始数据到Seurat对象:华大空间转录组分析流程实战解析

本文详细解析了从Stereo-seq原始数据到Seurat对象的完整分析流程,重点解决华大空间转录组数据处理中的三大痛点:bin_size参数设置、批量处理内存管理及格式转换信息丢失。通过Python的stereopy库和R的SeuratDisk包,实现.gem到.h5ad再到.h5seurat的高效转换,为研究者提供了一套可复用的空间转录组分析解决方案。

weixin_30315723的博客 215

05、基于ALV表报实现复选框、全选、取消全选等功能

基于Function ALV实现复选框、全选及取消全选等功能

wo520yl1314的博客 2370

逆置单链表

逆置单链表 问题描述:实现算法,将一个单链表逆置。(将一个单链表中的所有节点按照逆序存放) 分析:将一个单链表逆置其实就是用头插法建立单链表。定义一个空链表,分别将元单链表中的第一个节点、第二个节点一直到第n个节点插入新单链表的头部,即插入的节点成为新单链表的第一个节点。 // 假设链表节点的数据域包含学号、姓名、地址 #include <iostream> #include <string> using namespace std; struct node { in

weixin_56434818的博客 2744

离线环境下 Ubuntu 22.04 制作自定义apt源 安装 Docker环境 的部署方案

本文介绍了一种在无外网环境下部署服务器项目的离线方案。通过在外网环境中制作包含APT软件包和Docker镜像的离线资源包,实现在内网环境中的完整部署。方案详细说明了离线APT源的制作方法、Docker镜像的导出/导入流程,以及内网服务器的软件安装和网络配置步骤。特别强调了版本一致性、目录结构规范和网络适配等注意事项,适用于需要严格隔离网络的生产环境部署。该方案具有可扩展性,可根据实际需求调整软件包和镜像列表。

mmx_2022的博客 653

单链表逆置(递归和迭代)

迭代 class Solution { public ListNode reverseList(ListNode head) { if (head == null) return head; ListNode a=head, b=head.next; head.next = null; while (b != null) { ListNode c = b.next; b.next = a; a = b; b = c;

乐行僧的博客 458

VCS 2018 环境下,手把手教你用 UVMC 搞定 SystemC 和 SystemVerilog 混合仿真(附完整代码)

本文详细介绍了在VCS 2018环境下使用UVMC实现SystemC和SystemVerilog混合仿真的完整指南。从环境配置、工具链设置到UVMC通信机制解析,提供了实战案例和高级调试技巧,帮助开发者高效搭建复杂验证环境。特别适合需要处理跨语言仿真的芯片验证工程师。

weixin_30952535的博客 285

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程,涵盖运动学建模、仿真环境搭建、PID控制器设计与实现等关键环节。通过Simulink仿真和可视化调试技巧,帮助开发者掌握移动机器人运动控制的核心技术,提升轨迹跟踪精度与性能优化能力。

weixin_28717683的博客 240

力扣刷题(python)50天——第三十九天:反转链表

力扣刷题(python)50天——第三十九天:反转链表 题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/...

weixin_44568780的博客 215

Pointnet++改进91:2025最新改进模块-RepMBConv模块

本文提出了一种改进PointNet++网络的方法,通过在特征提取模块中引入RepMBConv结构来提升模型性能。主要内容包括:1)理论部分介绍了RepMBConv的设计原理,包含自监督学习框架、动态上下文建模等创新点;2)详细给出了三步修改步骤:创建包含RepMBConv的Python模块、在pointnet2_utils.py中添加注意力机制、修改pointnet2_sem_seg.py主网络结构;3)代码实现展示了如何将RepMBConv集成到PointNetSetAbstraction模块中,形成Po

AIcurator的博客 274

力扣LCR024:反转链表&&206.反转链表双解法(经典面试题)

LCR 024. 反转链表 - 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。你能否用两种方法解决这道题?注意:本题与主站 206 题相同: https://leetcode-cn.com/problems/reverse-linked-list/ [https://leetcode-cn.com/problems/reverse-linked-list/]206. 反转链表 - 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。你能否用两种方法解决这道题?

qq_60289399的博客 632

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【算法】笔记:LeetCode 206. 反转链表

这道题可以拆成几个小点去理解,本篇博文快速记录一下。有迭代和递归两种解法。迭代的解法空间复杂度更优秀,递归的思想更巧妙。这里主要总结下迭代的解法。并简要理解下递归的解法。LeetCode 206. 反转链表。

chenghan_yang的博客 736

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

力扣206. 反转链表题解

​ 上面的方法都是通过各种操作来改变每个节点的指针的指向,从而达到反转链表的目的。我们利用数组来顺序存储链表中的所有节点中的元素,再将数组中的所有元素逆向输出,把输出的所有元素重新组合成新的链表,这样也达到了反转原链表的目的。通过示例可以看出,我们需要进行的反转链表的操作,无非就是改变每个节点中指针的指向,由指向后一个节点改为指向前一个节点,而每个节点中存储的数据保持不变。​ 递归法反转链表的核心思想是将问题分解为更小的子问题,通过递归调用自身来反转除头节点外的子链表,然后处理头节点以完成整个链表的反转。

2401_87805056的博客 813

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

力扣系列-206.反转链表,92.反转链表|| 从反转整个链表 -> 反转前N个节点 -> 反转一个范围的节点( 迭代 Or 递归?)

本文系统讲解了反转链表的三种情况及其实现方法: 反转整个链表:通过迭代(双指针)和递归两种方式实现,核心思路是逐个反转节点指向 反转前N个节点:在完整反转基础上调整边界处理,重点解决断开重连问题 反转指定区间节点:通过定位区间、切断连接、反转后重新拼接的方式实现 文章提供了每种情况的详细思路图解和Java代码实现(包括迭代和递归两种解法),帮助读者深入理解链表反转的核心逻辑。从基础到进阶,层层递进地讲解了链表操作的关键技术点。

w_shixian的博客 1020

力扣206.反转链表

【代码】力扣206.反转链表。

2201_75490746的博客 208

LeetCode 206. 反转链表 - 迭代双指针与递归详解

题目描述:给定单链表的头节点 head,反转该链表并返回反转后的头节点。链表节点定义为:val、next。原题链接:https://leetcode.cn/problems/reverse-linked-list/难度等级:Easy相关标签:链表、双指针、递归、迭代、原地修改| 解法 | 时间复杂度 | 空间复杂度 | 优点 | 缺点 | 适用场景 || 迭代双指针(推荐) | O(n) | O(1) | 空间最优、实现稳健、工程友好 | 需谨慎维护三指针避免丢链 | 面试与工程首选 |

m0_52114506的博客 953

代码随想录第三天|链表设计、迭代和递归

定义一个临时变量cur进行链表的遍历,在遍历过程中,要判断当前结点cur的下一个结点的值是否为val,如果为val的话,进行删除操作,即cur.next=cur.next.next,把中间结点删除;这里要注意的是,头结点是否为空或者值是否为val的考虑,因为头结点前面并没有结点,所以无法对头结点删除,所以这里我们设置一个虚拟头结点dummyhead,将它初始化为任何数,并且指向头结点head,这样就可以避免以上考虑,迭代的终止条件是cur.next!:题目不难,理清加入,删除,查找的逻辑即可。

qq_43241968的博客 354

LeetCode 热题 100——链表——反转链表

避免使用所有关键字:即使在非严格模式下某些未来关键字可能被允许,也应避免使用,以保证代码的兼容性和可维护性。

weixin_53318497的博客 775

leetcode 92. reverse-linked-list-ii 反转链表 II python3

时间:2021-2-8 题目地址:https://leetcode-cn.com/problems/reverse-linked-list-ii/ 题目难度:Medium 题目描述: 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤m≤n≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 思路1:递归一步一...

isabloomingtree的博客 230

力扣-剑指 Offer 24. 反转链表(C++)- 反转链表+递归

题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 题目如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public:

qq_40467670的博客 324

Leetcode 16 java

迭代法:时间复杂度 O (n)(遍历一次链表),空间复杂度 O (1)(仅用 3 个指针),是更常用的解法(无递归栈开销)。递归法:时间复杂度 O (n)(递归 n 次),空间复杂度 O (n)(递归栈深度),思路更巧妙但需理解“回溯调整”。下次遇到链表操作,先想 “指针如何移动才能避免断裂”,多画几步流程(比如用草稿纸写 prev/curr/next 的变化),会比直接写代码更清晰~对比项翻转二叉树(递归)反转链表(迭代 / 递归)结构特性非线性(每个节点有两个分支)

im_AMBER的博客 882
上一篇: LeetCode回文链表问题(数组解法+双指针结合反转链表解法)
下一篇: Mybatis框架学习(一)基础配置及使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值