Leecode 206. 反转链表

AB脉冲详解(编码器,PLC,上位机) 编码器线有些是用不到的。Z脉冲:360度中,只有1度是输出,输出能力是。编码器实际就是发光二极管,所以电流超过20ma会缩短寿命或损坏。 阅读详情

题目

反转一个单链表。

示例:

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

进阶:

  • 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

解答

解法一:头插法

具体流程:

  1. 创建一个虚拟头节点,这样就不需要对头节点特殊处理了。
  2. 遍历原链表,将当前被遍历的结点按照头插法方式插入以虚拟头为首的链表中。
代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode dummy = new ListNode(0);
        ListNode pre = dummy;
        while(head != null) {
            ListNode next = head.next;
            head.next = pre.next;
            pre.next = head;
            head = next;
        }
        
        return dummy.next;
    }
}
结果

在这里插入图片描述

解法二:迭代法

注意处理好 pre,p 的关系就好了。

具体可看 《剑指Offer》

代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        while(head != null) {
            ListNode next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        
        return pre;
    }
}
结果

在这里插入图片描述

解法三:递归法

reverseList 方法的宏观语义:翻转 head 为头的链表,并返回新的头结点。

  1. 如果当前结点是 null ,或者没有下一个结点了,直接返回当前结点。
  2. 否则递归当前结点的 next 。
  3. 然后将当前结点链接到新链表的结尾。
  4. 最后返回新链表的头结点。
代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null || head.next == null) return head;
        
        ListNode newHead = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        
        return newHead;
    }
}
结果

在这里插入图片描述

廖雪峰Python教程[完整版] 廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白 立即下载

相关推荐

深入Linux网络子系统:STMMAC驱动如何通过MDIO总线与PHY芯片“对话”

本文深入解析了Linux网络子系统中STMMAC驱动通过MDIO总线与PHY芯片的通信机制。详细介绍了MDIO总线的注册流程、PHY设备的绑定机制以及设备树配置,帮助开发者理解MAC控制器与PHY芯片的协作基础,优化网络通信性能。

weixin_26897585的博客 446

LeeCode206反转链表(Java)(递归和迭代)

题目链接:LeeCode206反转链表 题目描述: 递归: 递归到最底层,再往回拼,很简单 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode nex

weixin_43590593的博客 210

STM32F103跑LVGL,用DMA加速刷屏,800*480大屏也能丝滑

本文详细介绍了如何在STM32F103芯片上通过DMA加速和内存优化,实现800*480大屏的LVGL流畅运行。通过FSMC+DMA硬件架构优化、双缓冲机制和LVGL参数调优,显著提升了界面刷新率和响应速度,适用于嵌入式GUI开发中的高性能需求场景。

weixin_30357231的博客 376

leetcode 206. 反转链表(Java)

链表反转示意图如下: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路:从

源码之下,了无秘密 3188

uniapp自定义tabbar闪屏?3步搞定原生tabbar隐藏+自定义占位(附完整代码)

本文针对UniApp开发中自定义TabBar切换页面闪烁的痛点,提供了一套根治方案。通过隐藏原生TabBar并利用自定义组件进行视觉占位,巧妙结合原生切换的无闪烁优势与自定义设计的灵活性。文章详细解析了闪屏根源,并附上完整的page.json配置与代码实现,帮助开发者彻底解决此问题,提升小程序应用质感。

postgres8guard的博客 1529

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2086

LeetCode:206. 反转链表(Java & Python)

题目: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 解答: 迭代方式: 首先判断链表是不是空的,如果是空的,直接返回null; 对于链表: 放两个指针p1, p2: ...

Implementation 2251

【智能制造】- APS系列|05 APS 排产的五大底层算法逻辑

很多人误以为APS只是给生产工单排先后顺序,实则整套系统依托成熟算法体系,完成多维度约束下的最优生产决策在制造业数字化排产普及的当下,依旧有不少制造管理者对APS存在认知误区,将其等同于简易工单排序工具。事实上,专业级高级计划与排程系统,早已脱离单纯按时间排序的基础功能,而是依托一整套成熟完善的底层算法逻辑,整合现场各类生产限制条件,在海量变量中自动推演、筛选、输出最贴合企业经营目标的生产方案。

qq_40821260的博客 433

LeetCode 206 反转链表以及应用场景(Java、C++)

在各种笔试面试中,链表都是很常会被问到的数据结构,上次在LeetCode的上刷到反转链表那道题,不难,但是很经典,在很多其他的应用场景中都会用到这个方法,所以今天就整理一篇博客~ 在博客中暂时只写了一种反转链表的应用场景——判断一个链表是否是回文链表。之后遇到其他的会再加上去~ 1、首先定义链表结点: public class ListNode{ int value; ...

Ysunflower的博客 969

【微服务】Spring AI Alibaba Jmus 从部署到项目实战详解

Spring AI Alibaba Jmus 从部署到项目实战详解

congge 4185

YOLOV5 自动刷图脚本实战(十五)之如何找到正确的门

DXF是一个2D游戏,我们所看到的人物移动,其实是后面的背景在移动,我们所看到的画面,不过是一个完整背景中的一个镜头视角而已想要正确找到门的坐标,我们需要对不同的地图中的每个房间做一些配置信息。

qq_38892949的博客 2805

leetcode:反转链表(java)

题目 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? java /** * Definition for singly-linked list. * public class Lis...

从一点一滴做起 853

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2669

leecode206反转链表

反转链表的主要思想就是:一个指针记录下一个链表的位置,由于链表一旦进行反转,就断掉了;一个curNode和preNode需要反转操作,反转完了之后再进行移动位置; public static ListNode reverseNode2(ListNode head){ //用来记录反转之后的headnode ListNode headNode = null; ListNode curNode = head; ListNode preNode =null; w

veronicabqy的博客 693

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Leecode206 反转链表

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

子冉冰清的博客 391

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeeCode206: 反转链表

文章目录题目来源题目描述解题思路实现代码 题目来源 https://leetcode-cn.com/problems/reverse-linked-list/description/ 题目描述 反转一个单链表 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路 采用迭代法解...

SNAYi 185

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeeCode 206.反转链表

题目要求反转单链表,并提供了递归解法。示例输入[1,2,3,4,5]输出[5,4,3,2,1]。递归解法关键步骤:1.基线条件处理空链表或单节点;2.递归反转后续节点;3.将当前节点接至反转后链表的末尾;4.断开原链表连接防止循环。测试代码展示了从1到5的链表反转过程,验证了算法的正确性。该解法时间复杂度O(n),空间复杂度O(n)(递归栈),满足题目要求。

u012116089的博客 318

Leecode 206. 反转链表

文章目录题目题解代码 题目 反转链表 题解 比较骚操作,就是不改变原来指向,只是重新赋值 代码 public ListNode reverseList(ListNode head) { if(head==null){ return head; } List<Integer> list = new ArrayList<>(); list.add(head.val); ListNo

大鸡腿的博客 248

leecode 206-反转链表

很基础一个链表操作,思路就是新建一个链表,然后把原来的链表按照头插法插入到新链表就行了,注意最好是用一个带头结点的链表,这样在插入元素时方便一点。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]链表中节点的数目范围是 [0, 5000]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []

qq_46440072的博客 557

【LeeCode】206.反转链表

206.反转链表

LeeYotta的博客 476

leecode206. 反转链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def revers

TImeless的博客 256

leecode 206.反转链表

3.将指针反转,q=q->next,p->next=NULL,head=p,p=q。1.先定义两个点,防止丢失链表,p=head, q=p。2.将head最初设为NULL。

Crialler的博客 861

LeeCode 206—反转链表

????题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表 链表题 就是 操作指针 代码实现: function reverseList(head){ let curr = head; let pre = null; while(curr){ //curr.next值先赋给next,以免覆盖,next移动 const next = curr.next; //改变curr指向,给curr.next赋值,指向null curr.next = p

lucky_ferry的博客 149

【LeeCode】206. 反转链表

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

Mason97的博客 181

LeeCode206——反转链表

https://leetcode-cn.com/problems/reverse-linked-list/submissions/ 1、双指针 public static ListNode reverseList(ListNode head) { ListNode pre; ListNode cur; ListNode newHead = null; cur = head; pre = cur.next; while(pre != null) { cur.next = newH

aaqian1的博客 159

leecode 206. 反转链表

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

haponchang的博客 402
上一篇: Leetcode 203. 移除链表元素
下一篇: Leetcode 234. 回文链表
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值