C/C++---------------LeetCode第LCR. 024.反转链表

news2024/11/24 13:10:13

反转链表

  • 题目及要求
  • 双指针

题目及要求

双指针

思路:遍历链表,并在访问各节点时修改 next 引用指向,首先,检查链表是否为空或者只有一个节点,如果是的话直接返回原始的头节点,然后使用三个指针来迭代整个链表:prev(前一个节点)、curr(当前节点)和nextNode(下一个节点),在每一步迭代中,将curr的next指针指向prev,然后更新prev和curr指针为下一个节点,直到遍历完整个链表。最后返回新的头节点prev,即原链表的尾节点。这样就完成了链表的反转操作
时间复杂度:O(n)
空间复杂度:O(1)

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        // 检查链表为空或只有一个节点的情况,直接返回原链表头节点
        if (!head || !head->next) {
            return head;
        }
        
        ListNode* prev = nullptr;  // 用于存储当前节点的前一个节点
        ListNode* curr = head;     // 当前节点指针,初始指向链表头节点
        
        while (curr) {
            ListNode* nextNode = curr->next;  // 保存当前节点的下一个节点
            curr->next = prev;                // 将当前节点的指针指向前一个节点,实现反转
            prev = curr;                      // 更新前一个节点为当前节点
            curr = nextNode;                  // 更新当前节点为下一个节点
        }

        return prev;  // 返回反转后的链表头节点
    }
};

在这里插入图片描述

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

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

相关文章

echarts 实现tooltip提示框样式自定义

实现echarts图提示框自定义样式,最重要的是给tooltip加一个自定义class,下面是我写的例子: tooltip: {trigger: "axis",axisPointer: {type: "line",},className: "custom-tooltip-box",formatter: function …

JVM虚拟机-虚拟机执行子系统-第6章 字节码指令

字节码指令 Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需的参数(称为操作数,Operand)构成。 字节码与数据类型 在Java虚拟…

【UE】属性同步发送和接收源码分析

概述 UE只有Actor类有属性同步功能,Actor开启属性同步的前提是Actor的bReplicated属性为true,属性同步只有Server可以往Client同步,NetDriver类中负责发送和接收属性同步数据,在Server端每帧调用UNetDriver::TickFlush&#xff0…

MySQL初始化报错。VCRUNTIME140_1.dll缺失

从自己电脑内搜索此dll,粘贴到服务器的以下位置即可。

kubernetes学习-概念3

工作负载资源 Kubernetes 提供了几个内置的 API 来声明式管理工作负载及其组件。 最终,你的应用以容器的形式在 Pods 中运行; 但是,直接管理单个 Pod 的工作量将会非常繁琐。例如,如果一个 Pod 失败了,你可能希望运行…

中科创达:坚定看好未来十五年的大模型机遇

中科创达是一家成立于2008年的智能操作系统产品和技术提供商,15年前公司成立的时候正赶上了安卓操作系统将功能手机推向了智能手机,截至目前,已赋能超过近9亿台手机走向市场。2014年中科创达开始拓展智能汽车方向,2015年拓展物联网…

源码安装prometheus(普罗米修斯监控)

IP角色系统规格192.168.0.38Prometheus 服务端CentOS 74c8g192.168.0.25node_exporter 客户端CentOS 74c8g 普罗米修斯下载网址: Download | Prometheus 1.下载prometheus [rootprometheus opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.47.2…

Echarts -- 实现动态加载series

一、需求说明 1.1具体说明 根据每天的订单,查询出券码(title字段)的核销情况,如下单成功,已核销,取消订单,订单失败, title字段又分大概七八种,最后数据进行整合完毕之后,前端使用Echarts进行堆叠柱状图显示每天数据。 1.2 需求拆解 根据时间范围查询出每天的订单数据后,根据…

torch - FloatTensor标签(boolean)数值转换(1/0)

当我们数据集的标签为True/False的boolean型时,我们可以直接使用FloatTensor传入该标签。返回的数据为tensor([0.])或者tensor([1.]),这十分有利于二分类任务的预测标签对错判断。 这个用法是基于Python的布尔类型与整数之间的隐式类型转换。在Python中&…

【大话Presto 】- 核心概念

文章目录 前言Operator Model And Iterator Model系统组成Connector数据模型查询执行模型StatementStageTaskSplitDriverOperatorExchangePipeLine 总结 前言 Presto(PrestoDB)是一个FaceBook开源的分布式MPP SQL引擎,旨在处理大规模数据的查…

EMP.DLL是什么东西?怎么解决EMP.DLL文件缺失

在我们使用电脑的过程中,有时会遇到一些特定的错误提示,比如“emp.dll文件缺失”。这样的提示对许多用户来说可能一脸懵逼,不知道怎么处理,那么,究竟什么是emp.dll?它的缺失会产生什么影响?又应…

Linux 基础操作手记四

文章目录 环境变量生效配置python版本安装SSH关闭GUIvi 清空 环境变量生效 source ~/.bashrc # 或 source ~/.zshrc 配置python版本 sudo add-apt-repository ppa:deadsnakes/ppa sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 sudo upd…

Logrotate日志切割工具的应用与配置

Logrotate日志切割工具的应用与配置,以下是公司生产环境亲测,跳了不少的坑,最后已经部署到生产了,可放心使用 简介 Logrotate是一个在Unix和类Unix系统(如Linux)上用于管理日志文件的实用程序。它可以帮助…

html书本翻页效果,浪漫表白日记本(附源码)

文章目录 1.设计来源1.1 书本正面1.2 界面1-21.3 界面3-41.4 界面5-61.5 界面7-81.6 界面9-101.7 界面11-121.8 书本结尾 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/1…

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol 0. 版本0.1 AccessControlEnumerable.sol 1. 目标合约2. 代码精读2.1 supportsInterface(bytes4 interfaceId)2.2 _grantRole(bytes32 role, address account)2.3 _revokeRole(bytes32 role, addre…

系列一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新?

一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新? JVM是Java虚拟机的意思。它是建立在操作系统之上的,由类加载器子系统、本地方法栈、Java栈、程序计数器、方法区、堆、本地方法库、本地方法接口、执行引擎组成。 (1&#xff0…

UniPro提高集成能力 让客户专注于交付价值

一千个哈姆莱特就有一千个读者,一千个开发团队,也会有各不相同的软件工具和工作流程。工具与工具之间,功能上的割裂亦或重叠,都会给企业和团队的协作带来阻塞,结果就会导致团队之间各自为战、信息孤岛的形成以及资源的…

TikTok与未来城市:数字社交如何影响城市发展

在数字化时代的浪潮中,社交媒体的兴起不仅仅改变了我们的个人生活,还深刻地影响了城市的发展和演变。其中,TikTok作为一款备受欢迎的短视频平台,正悄然改变着城市文化、社交互动和城市规划。本文将深入探讨TikTok对未来城市的影响…

Web server failed to start. Port 8080 was already in use.

Windows 服务端口被占用,杀死进程命令: netstat -ano | findstr 8080taskkill -PID [xxx] -F

电子科技大学 分布式系统 期末复习笔记

第一章 为什么需要分布式系统:功能分离,固有的分布性,负载均衡,可靠性,经济性。 定义:分布式系统是这样一种系统,其中位于联网计算机上的组件仅通过传递消息来通信和协调它们的操作。 特点&am…