剑指offerJZ24 反转链表

news2024/9/21 20:40:24

描述:

        给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

数据范围: 0≤n≤10000≤n≤1000

要求:空间复杂度 O(1),时间复杂度 O(n) 。

如当输入链表{1,2,3}时,

经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。

解题思路:

        简单题,主要考察链表基础,我们在建一个链表时,通常有尾插法和头插法建表(此处不做详细介绍)。简单来说,尾插法可以得到一个按照插入顺序的链表,头插法可以得到一个逆置的链表,所以此题可以在遍历原链表的时候,以头插法建一个新表,而得到的新表,就是需要的答案。

如图:重点是,每次将加进来的节点插到第一个位置即可。

 代码实现

public ListNode ReverseList (ListNode head) {
        //newHead总是指向新链表的第一个节点;
        ListNode newHead = null;
        while (head != null){
            //储存head.next,防止丢失,为了后边指针往后移动;
            ListNode temp = head.next;
            //将newHead连在head后边;
            //其实就是每次将新遍历到的节点插在newList的头结点与第一个节点之间->就是头插法建链表
            //在建newList的过程中,顺便完成了逆置;
            head.next = newHead;
            //newHead拿到head的值
            newHead = head;
            //head往后移动;
            head = temp;
        }
        return  newHead;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型本地化部署1-Ollama安装(Windows)

大模型本地化部署1-Ollama安装(Windows) 1、下载Ollama安装包2、安装Ollama3、设置模型存放目录4、查看Ollama支持的模型5、模型安装6、查看已安装的模型列表7、运行一个模型8、设置Ollama允许外放访问 1、下载Ollama安装包 Ollama官网地址 https://oll…

【数据结构】二叉树基础(带你详细了解二叉树)

🌏个人博客主页:心.c ​ 前言:最近学习了二叉树,和大家分享一下我的理解和感悟,希望对大家有所帮助,话不多说,开整!!! 🔥🔥&#x1f5…

示波器测量交流市电的注意事项

先说结论: 测量交流电或者市电的时候,注意示波器的电源千万不要用那种带GND的三角插头,可以用双脚插头但要小心漏电,示波器外壳金属部分可能带电: 当示波器的探头探针接L,黑色架子接N,这个时候…

YOLOv8改进 | 模块缝合 | C2f融合卷积重参数化OREPA【CVPR2022】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

python自动化操作PDF,拆分pdf合并pdf,提取pdf内容

第三方库介绍 Python 操作 PDF 会用到两个库,分别是:PyPDF2 和 pdfplumber。 PyPDF2 可以更好的读取、写入、分割、合并PDF文件; pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格,主要应用于机器生…

Redis基础知识学习笔记(二)

文章目录 一.Redis安装1.Windows 下安装1>资源管理器目录进入2>目录进入命令:3.配置环境变量 2.Linux 下安装1> 安装redis2> 启动redis3> 查看 redis 是否启动 二.Redis配置1. 查看配置2. 编辑配置3. 参数说明 三.Redis数据类型1. String(字符串&…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM的内存模型 4.那些是GC Roots的对象有哪些? 1.类加载过程 通过类加载器加载主类到JVM,加载过程可以分为五个主要阶段:加载、验证、准备、解析、初始化。…

PyTorch中使用Transformer对一维序列进行分类的源代码

在PyTorch中使用Transformer对一维序列进行分类是一种常见做法,尤其是在处理时间序列数据、自然语言处理等领域。Transformer模型因其并行化处理能力和自注意力机制而成为许多任务的首选模型。 下面是一个使用PyTorch实现Transformer对一维序列进行分类的完整示例代…

ECC密码与RSA

一、ECC密码(椭圆曲线密码) 1.基本知识 定义: ECC 全称为椭圆曲线加密,EllipseCurve Cryptography,是一种基于椭圆曲线数学的公钥密码。与传统的基于大质数因子分解困难性的加密方法不同,ECC 依赖于解决椭圆…

@antv/x6 要求不显示水平滚动条,并且如果水平方向上显示不全的节点,则要求自动显示全部节点,垂直方向可以出现滚动条来滚动显示所有的节点。

1、要求一共有二个: 要求一:水平滚动条不显示。之前的文章中就已经发表过,可以用Scroller的className来处理。要求二:水平方向上显示全部节点,如果有显示不全的节点(即看不到的节点)要求能够显示…

asp.net实验:数据库写入不成功

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

国庆节微信头像怎么制作?制作国庆国旗节日头像的4个方法

国庆将至,不少朋友的微信头像都换成了渐变红旗头像,是不是觉得超酷呢?如果你也想拥有这样的头像,那就跟着这篇文章一起操作吧! 国庆节前夕,让我们先来了解一下如何制作渐变红旗头像。首先,我们需…

基于Python的Flask框架实战全流程从新建到部署【2】

本项目是基于win10系统运行以及操作的,部署在win7系统。 Flask 是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。 本文是flask框架实战项目,从新建、运行、测试、部署项目…

C/C++的内存分布、动态内存管理等的介绍

文章目录 前言一、C/C的内存分布二、C/C动态内存管理总结 前言 C/C的内存分布、动态内存管理等的介绍 一、C/C的内存分布 因为程序在运行过程中需要存储一些不同的数据,所以需要对内存空间进行分类 二、C/C动态内存管理 C语言动态内存管理是malloc / calloc / rea…

光降解水凝胶:三色光响应

大家好,今天来了解一种三色可见光波长选择性光降解水凝胶生物材料——《Tricolor visible wavelength-selective photodegradable hydrogel biomaterials》发表于《Nature Communications》,其交联剂Rubiq、Rubp和oNB对低能可见光(400 - 617n…

洛科威岩棉板重塑屋面应用,以多重优势成为“优选材料”

屋面作为建筑物的“外衣”,不仅承载着遮风挡雨的基本功能,更在保温隔热、防火安全、防潮隔音等方面发挥着举足轻重的作用。然而,面对极端气候、自然灾害以及日益严苛的环保标准,传统屋面材料逐渐暴露出其局限性,保温效…

JVM垃圾判定算法

垃圾收集技术是Java的一堵高墙。Java堆内存中存放着几乎所有的对象实例,垃圾收集器在对堆内存进行回收前,第一件事情就是要确定这些对象中哪些还存活,哪些已经死去(即不可能再被任何途径使用的对象)。也就是判定垃圾。…

STM32 使用8720 通过LWIP发送数据

一、硬件IOC 1、GPIO 2、NVIC 3、SYS 4、RCC 5、ETH 6、USART 7、LWIP 二、软件函数 1、Main /* USER CODE BEGIN Includes */ #include "ytcesys.h" /* USER CODE END Includes *//* USER CODE BEGIN 2 */ ethreset(); MX_LWIP_Init(); OPEN_USART1…

chunqiude

CVE-2022-28512 靶标介绍: Fantastic Blog (CMS)是一个绝对出色的博客/文章网络内容管理系统。它使您可以轻松地管理您的网站或博客,它为您提供了广泛的功能来定制您的博客以满足您的需求。它具有强大的功能,您无需接触任何代码即可启动并运…

【Java开发】Maven安装配置详细教程

原创文章,不得转载。 文章目录 产生背景用途安装配置本地仓库配置镜像 产生背景 在Java应用程序开发中,随着项目规模的不断扩大和复杂性增加,项目依赖的库、插件和配置文件也变得愈加复杂。传统的项目构建工具(如Ant)…