数据结构 ——— 单链表oj题:反转链表
目录
题目要求
手搓一个简易链表
代码实现
题目要求
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表
手搓一个简易链表
代码演示:
struct ListNode* n1 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n1);
struct ListNode* n2 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n2);
struct ListNode* n3 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n3);
struct ListNode* n4 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n4);
struct ListNode* n5 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n5);n1->val = 1;
n2->val = 3;
n3->val = 5;
n4->val = 7;
n5->val = 9;n1->next = n2;
n2->next = n3;
n3->next = n4;
n4->next = n5;
n5->next = NULL;
代码实现
代码演示:
struct ListNode* reverseList(struct ListNode* head)
{if (head == NULL)return NULL;struct ListNode* prev = NULL;struct ListNode* cur = head;struct ListNode* next = cur->next;while (cur != NULL){cur->next = prev;// 迭代prev = cur;cur = next;if(next != NULL)next = next->next;}return prev;
}
代码解析:
代码思路:改变节点的指向,将单链表的第一个节点的 next 指向 NULL,第二个节点的 next 指向第一个节点,第三个节点的 next 指向第二个节点…………,以此类推,就完成了链表的反转
代码逻辑:利用一前(prev)一后(next)一中间(cur) 3 个节点指针进行迭代,将 cur 的 next 指向 prev,再依次往后赋值,需要注意的是 next 赋值为下一个节点的时候,要先判断 next 是否为空,再赋值,且结束的条件是中间节点为空,中间节点为空时就表示链表反转到位,最后再返回 prev 节点指针,就是新的头节点指针
代码验证:
代码的时间复杂度和空间复杂度:
while 循环执行了 N 次,每次内部是常数次,且没有开辟额外的空间,得出:
算法的时间复杂度(大O渐进表示法):O(N)
算法的空间复杂度(大O渐进表示法):O(1)
相关文章:
数据结构 ——— 单链表oj题:反转链表
目录 题目要求 手搓一个简易链表 代码实现 题目要求 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 手搓一个简易链表 代码演示: struct ListNode* n1 (struct ListNode*)malloc(sizeof(struct ListNode)); assert(n1);…...
前端项目npm install报错解决的解决办法
报错问题一: [rootspug-api spug_web]# npm install npm WARN deprecated xterm4.19.0: This package is now deprecated. Move to xterm/xterm instead. npm WARN deprecated workbox-google-analytics4.3.1: It is not compatible with newer versions of GA starting with v…...
vue双向绑定/小程序双向绑定区别
Vue双向绑定与小程序双向绑定在实现方式、语法差异以及功能特性上均存在显著区别。以下是对这两者的详细比较: 一、实现方式 Vue双向绑定 Vue的双向绑定主要通过其响应式数据系统实现。Vue使用Object.defineProperty()方法(或在Vue 3中使用Proxy对象&am…...
华为OD机试真题---字符串变换最小字符串
题目描述: 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则: 交换字符串中任意两个不同位置的字符。 输入描述: 一串小写字母组成的字符串s 输出描述: 按照要求进行变换得到的最小字符串 补…...
JAVA基础面试题汇总(持续更新)
1、精确运算场景使用浮点型运算问题 精确运算场景(如金融领域计算应计利息)计算数字,使用浮点型,由于精度丢失问题,会导致计算后的结果和预期不一致,使用Bigdecimal类型解决此问题,示例代码如下…...
设计模式-创建型-常用:单例模式、工厂模式、建造者模式
单例模式 概念 一个类只允许创建一个对象(或实例),那这个类就是单例类,这种设计模式就叫做单例模式。对于一些类,创建和销毁比较复杂,如果每次使用都创建一个对象会很耗费性能,因此可以把它设…...
【数据结构】【链表代码】随机链表的复制
/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点,连接到原结点的后面Node…...
Linux 系统五种帮助命令的使用
Linux 系统五种帮助命令的使用 本文将介绍 Linux 系统中常用的帮助命令,包括 man、–help、whatis、apropos 和 info 命令。这些命令对于新手和有经验的用户来说,都是查找命令信息、理解命令功能的有力工具。 文章目录 Linux 系统五种帮助命令的使用一…...
Vueron引领未来出行:2026年ADAS激光雷达解决方案上市路线图深度剖析
Vueron ADAS激光雷达解决方案路线图分析:2026年上市展望 Vueron近期发布的ADAS激光雷达解决方案路线图,标志着该公司在自动驾驶技术领域迈出了重要一步。该路线图以2026年上市为目标,彰显了Vueron对未来市场趋势的精准把握和对技术创新的坚定…...
Java | Leetcode java题解之第458题可怜的小猪
题目: 题解: class Solution {public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}int[][] combinations new int[buckets 1][buckets 1];combinations[0][0] 1;int iterations minutesToTest /…...
怎么不改变视频大小的情况下,修改视频的时长
视频文件太大怎么变小?不影响画质的四种方法 怎么不改变视频大小的情况下,修改视频的时长 截取结尾的时间你可以使用 ffmpeg 来裁剪视频的结尾部分。假设你想去掉视频最后的3秒钟,可以先使用 ffmpeg 获取视频的总时长,然后通过指定一个新的…...
数据结构:AVL树
前言 学习了普通二叉树,发现普通二叉树作用不大,于是我们学习了搜索二叉树,给二叉树新增了搜索、排序、去重等特性, 但是,在极端情况下搜索二叉树会退化成单边树,搜索的时间复杂度达到了O(N),这…...
系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控
目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序: 编写.NET程序 前言 在现代生活中,电脑作为核心工具,其性能和稳定性的维护至关重要。为确保电脑高效运行,我们不仅需关注软件优化…...
【工作流引擎集成】springboot+Vue+activiti+mysql带工作流集成系统,直接用于业务开发,流程设计,工作流审批,会签
前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行的前后端…...
SumatraPDF一打开就无响应怎么办?
结论:当前安装版不论32位还是64位都会出现问题。使用portable免安装版未发现相关问题。——sumatrapdf可以用于pdf, epub, mobi 等格式文件的浏览。 点击看相关问题和讨论...
棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程
一、前言 【试用版软件下载,可以点击本文章最下方官网卡片】 棋牌灯控计时计费系统软件免费试用版怎么下载 佳易王计时收银管理系统操作教程 棋牌计时计费软件的应用也提升了顾客的服务体验,顾客可以清晰的看到自己的消费时间和费用。增加了消费的透明…...
Excel下拉菜单制作及选项修改
Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框(选项菜单)是十分常见的功能。Excel支持下拉框制作,通过预设选项进行菜单选择,可以避免手动输入错误和重复工作,提升数据输入的准确性和效率 1、下拉菜单制作 步…...
树莓派 mysql (兼容mariadb)登陆问题
树莓派 mysql (兼容mariadb)登陆问题 树莓派 MySQL 登陆问题 1 使用默认账号登陆 在首次登陆的情况下,系统默认为root用户授权 sudo su root  2. 使用root用户登…...
智能手表(Smart Watch)项目
文章目录 前言一、智能手表(Smart Watch)简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…...
设计模式~~~
简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂角色 具体工厂角色...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
