LeetCode 之 剑指 Offer 24. 反转链表(Java)

2023-10-31

LeetCode 之 剑指 Offer 24. 反转链表 (Java)

一、题目

剑指 Offer 24. 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

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

限制:

  1. 0 <= 节点个数 <= 5000

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、解题思路

  反转链表因为没办法知道上一节点内容,所以最朴素的方法就是先用数组记下来所有节点值,然后再逆序建个新链表。或者再建一条链,遍历当前链不断给新链插入头节点。但是这样都会增加空间消耗。

  考虑上几道题的双指针,这道题难点就在于没办法知道上一个节点,那么在遍历时新建一个上一个节点就好了。先判断链表是否为空或者只有一个节点,是的话就直接返回;不是的话,设置当前节点为第二个节点,第一节点就是上一个节点 curNode = head.next,lastNode = head,lastNode.next = null。接下来遍历链表,如果当前节点有下一个节点,那就新建一个临时节点先保存 curNode.next,这个时候逆序处理,当前节点的下一节点应该是上一个节点 lastNode,之后上一个节点顺移为 curNode,curNode节点顺移为 临时节点。链表遍历结束后,curNode 的 next 设置为 lastNod。

三、代码

/**
 * 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 curNode = head.next;
        ListNode lastNode = head;
        lastNode.next = null;
        while(curNode.next != null){
            ListNode tempNode = curNode.next;
            curNode.next = lastNode;
            lastNode = curNode;
            curNode = tempNode;
        }
        curNode.next = lastNode;
        return curNode;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 之 剑指 Offer 24. 反转链表(Java) 的相关文章

随机推荐

  • 开发web服务程序

    开发web服务程序 1 概述 开发简单 web 服务程序 cloudgo 了解 web 服务器工作原理 任务目标 熟悉 go 服务器工作原理 基于现有 web 库 编写一个简单 web应用类似 cloudgo 使用 curl 工具访问 we
  • Linux运维必备的13款实用工具,你用过吗?

    本文介绍几款 Linux 运维比较实用的工具 希望对 Linux 管理员有所帮助 1 查看进程占用带宽情况 Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽 下载 http sourceforg
  • sessionStorage存储

  • todo:在此放置对话框控件_WinCC报警控件、在线趋势/表格控件数据查询

    1 报警控件数据查询 在WinCC报警记录组态时 我们可以给报警消息定义不同的类别 类型 用户文本块等 有了以上的组态 我们就可以自定义过滤条件 在报警控件中查询或显示分类的报警信息 1 1 报警控件手动查询 在组态报警控件时 可直接设置报
  • 将10进制小数转换为IEEE754浮点数格式

    将十进制数 20 625 转换为IEEE754单精度浮点数格式 步骤 20 625 10100 101 1 0100101 2 4 移码 4 127 131 1000 0011 符号 0 尾数 01001010000000000000000
  • python下快速使用echart

    所需文件如图 echarts min js 可以在echarts官网 下载 中找到 app py from flask import Flask render template app Flask name app route def ec
  • GD32+EEPROM(IO)

    一 测试环境 1 芯片 GD32F10x 2 EEPROM BL24CM1A 3 SCL引脚 推完输出 硬件没上拉 4 SDA引脚 浮空输入 硬件没上拉 二 功能 1 使用IO模拟的方式 实现读写EEPROM 三 问题描述 1 很久没有调试
  • 零基础自学Python数据分析之安装、使用等

    这两年Python之火 不再赘述 当然 一些教培机构的吹捧赞美之词可能略高了 实在不敢苟同 但 本人前面也写过Python的功能之强大 用法之多之广以及抑制不住的赞美之情溢于言辞之间 前两天听到一个调侃 说有一个哥们以前是做数据分析的 每天
  • idea右键建包无package(无class等之类的同样适用)

    Intelidea创建好项目之后 右键新建Java class的时候发现没有改选项 只有以下几个选项 把src目录设为源码目录 首先打开Project Structure 如果有test测试文件夹就选中然后点Test按钮 最后点击OK完成
  • Taro和uniapp的区别?

    最近这段时间 因为工作需要 学习认识了taro 因为以前也用过uniapp 因此也对这两款跨端开发框架做了一些对比 总结如下 1 体积不同 Taro使用esbuild打包 虽然打包速度提升 但是打包后体积还是大 uniapp使用vite打包
  • MongoDB(Roboit3T)中导出集合数据

    C MongoDB bin mongoexport d MES LOCAL c Employee o C Employee json 这里导出的是MES LOCAL数据库下的 Employee文档 一 先从数据库中导出文档 平板中的数据 导
  • awk与shell之间的变量传递方法

    http renyongjie668 blog 163 com blog static 16005312011829102025222 在linux下awk是个好东东 处理一些文本文件会非常方便 而在Linux下嘛 经常会和shell打交道
  • GB2312编码规则与代码实现

    GB2312编码范围 A1A1 FEFE 其中汉字编码范围 B0A1 F7FE 汉字编码 第一字节0xB0 0xF7 对应区号 16 87 第二个字节0xA1 0xFE 对应位号 01 94 GB2312编码是第一个汉字编码国家标准 是由中
  • BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType

    http blog csdn net nullreference article details 7912588 public boolean isEnabled int position 如果列表的一项item是separator 充当分
  • Redisson Map踩坑姿势

    使用Java的Redisson客户端时 踩了一些坑 分享再次 供大家参考 因此引发的一次故障及排查过程参见 记一次线上 内存泄露 故障 RMapCache的坑 RMapCache的坑要从Redisson中Map结构的元素淘汰机制说起 详见
  • (python)牛客网(华为机试一)——入门

    本博客为博主解题的部分记录 由于均为自己写的 所以答案并非最优解 有很多地方可以优化 其他题解合集 python 牛客网 华为机试二 简单 python 牛客网 华为机试三 中等 python 牛客网 华为机试四 较难 题目 HJ17 取近
  • c++模板与泛型编程

    函数模板 template
  • git clone弹出登录验证框 登录无效 -Windows环境

    git篇 git clone弹出登录验证框 登录无效 Windows环境 在这里插入图片描述 使用git clone下载代码的时候 弹出github登录界面 确认账户密码正确的情况下 依旧重复弹出 原因是Github 禁用了TLS v1 0
  • 他98年的,我玩不过他...

    现在的小年轻真的卷得过分了 前段时间我们公司来了个98年的 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好 一大家子指望他一个人
  • LeetCode 之 剑指 Offer 24. 反转链表(Java)

    文章目录 LeetCode 之 剑指 Offer 24 反转链表 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 24 反转链表 Java 一 题目 剑指 Offer 24 反转链表 定义一个函数 输入一