当前位置: 首页 > news >正文

链表题目练习----重排链表

这道题会联系到前面写的一篇文章----快慢指针相关经典问题。

重排链表

指针法

这道题乍一看,好像有点难处理,但如果仔细观察就会发现,这道题是查找中间节点+反转链表+链表的合并问题,具体细节有些不同,这个在反装中间链表时,要从中间节点的下一个位置开始反装,具体过程如下。

代码实现:

typedef struct ListNode Node;Node* ReverseList(struct ListNode* head)
{Node* cur = head;Node* n1 = NULL, *n2 = head, *n3 = head->next;while (n2){n2->next = n1;n1 = n2;n2 = n3;if (n3)n3 = n3->next;}return n1;
}Node* MidList(struct ListNode* head)
{Node* fast = head, *slow = head;while (fast && fast->next){slow = slow->next;if(fast)fast = fast->next->next;}return slow;
}void reorderList(struct ListNode* head)
{if (head == NULL || head->next == NULL || head->next->next == NULL){return;}Node* cur = head, *mid = MidList(head);Node* rev = ReverseList(mid->next);mid->next = NULL;Node* tmp1 = cur, *tmp2 = rev;while (cur && rev){tmp1 = cur->next;tmp2 = rev->next;cur->next = rev;cur = tmp1;rev->next = cur;rev = tmp2;}
}

数组法

数组法就是利用数组直接存储每个节点,然后直接插入排序。首先开辟一个类型为struct ListNode*的数组存储每个节点,然后就重排。

这个我们直接上代码

typedef struct ListNode Node;void reorderList(struct ListNode* head)
{//如果是这种情况下,重排的结果与原链表相同,我们直接返回if (head == NULL || head->next == NULL || head->next->next == NULL){return;}//开辟数组Node* arr[40001];Node* cur = head;int n = 0;//存储每个节点的值while(cur){arr[n++] = cur;cur = cur->next;}//开始重排int i = 0, j = n - 1;while (i < j){//直接在原链表中操作,不用担心覆盖问题,因为这些值在数组中均有存储arr[i]->next = arr[j];i++;if (i == j){break;}arr[j]->next = arr[i];j--;}//最后不要忘了把重排后的最后一个位置置为空,防止成环//这里直接置最后i位置的值为空,我们等会画图解释arr[i]->next = NULL;
}

相关文章:

链表题目练习----重排链表

这道题会联系到前面写的一篇文章----快慢指针相关经典问题。 重排链表 指针法 这道题乍一看&#xff0c;好像有点难处理&#xff0c;但如果仔细观察就会发现&#xff0c;这道题是查找中间节点反转链表链表的合并问题&#xff0c;具体细节有些不同&#xff0c;这个在反装中间链…...

【杂记-浅谈XSS跨站脚本攻击】

一、什么是XSS&#xff1f; XSS&#xff0c;Cross-site Scripting&#xff0c;跨站脚本攻击&#xff0c;是一种典型的Web程序漏洞利用攻击&#xff0c;攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用&#xff0c;当用户访问网页时触发恶意脚本的…...

VMware虚拟机与MobaXterm建立远程连接失败

VMware虚拟机与MobaXterm建立远程连接失败 首先可以检查一下是不是虚拟机的ssh服务并不存在 解决方法&#xff1a; 1.更新镜像源 yum -y update 这个过程会有点久&#xff0c;请耐心等待 2.安装ssh yum install openssh-server 3.启动ssh systemctl restart sshd 4.查…...

mysql undolog管理

在MySQL中&#xff0c;Undo Log&#xff08;撤销日志&#xff09;用于支持事务的回滚和MVCC&#xff08;多版本并发控制&#xff09;。为了避免Undo Log不断增长&#xff0c;影响系统性能&#xff0c;需要进行合理的清理。MySQL的Undo Log清理策略主要依赖于系统的配置参数和后…...

【Linux】进程2——管理概念,进程概念

1.什么是管理&#xff1f; 那在还没有学习进程之前&#xff0c;就问大家&#xff0c;操作系统是怎么管理进行进程管理的呢&#xff1f; 很简单&#xff0c;先把进程描述起来&#xff0c;再把进程组织起来&#xff01; 我们拿大学为例子 最典型的管理者——校长最典型的被管理…...

【C++】植物大战僵尸杂交版自动存档——防闪退存档消失

植物大战僵尸杂交版现已更新到v2.0.88&#xff0c;闪退问题还是偶有发生&#xff0c;参考网上现有的方案&#xff0c;简单实现了一个。 原理就是监控存档目录的文件变化&#xff0c;一旦有新的存档&#xff0c;则将其备份。如发生闪退&#xff0c;则还原备份即可。 原目录&…...

通过Excel,生成sql,将A表数据插入B表

文章目录 投机取巧的方式,进行表数据初始化通过navicat搜索A表数据,然后复制进excel中通过excel的函数方式,将该批量数据自动生成插入B表的sql语句然后一次性拷贝生成的sql语句,放进navicat中一次执行,直接完成数据初始化...

如何在MySQL中实现upsert:如果不存在则插入?

目录 1 使用 REPLACE 2 使用 INSERT ... ON DUPLICATE KEY UPDATE 使用 INSERT IGNORE 有效会导致 MySQL 在尝试执行语句时忽略执行错误 INSERT 。这意味着 包含 索引或 字段 INSERT IGNORE 中重复值的语句 不会 产生错误&#xff0c;而只是完全忽略该特定 命令。其明显目的是…...

MyBatis中 set标签

1、set标签特点&#xff1a; set标签用于更新语句中set标签解析为set关键字set可以去除跟新语句中无用的逗号通常是和if标签一起使用 2、set标签的使用 编写接口方法编写sql语句 注意 当set标签中有条件成立时就会附加set关键字&#xff0c;字段为null时该列不会被更新。se…...

mysql自带分页

select 查询列表 from 表 limit offset,pagesize; offset代表的是起始的条目索引&#xff0c;默认从0开始size代表的是显示的条目数offset(n-1)*pagesize -- 第-页 limit 0 5 -- 第二页 limit 5,5 -- 第三页 limit 10,5 -- 第n页limit(n-1)*pagesize,pagesize -- pages…...

小学一年级数学上册,我终于学完了

目录 一、背景二、过程1.我对课程中的一些知识的思考2.我对于产品的思考3.我对自己儿子与知识产品结合的思考4.产品反馈的那些有意思的数据 三、总结 一、背景 简约而不简单&#xff0c;即是曾经的再现&#xff0c;也是未来的延伸&#xff0c;未来已来&#xff0c;就在脚下。 …...

使用wireshark分析tcp握手过程

开启抓包 tcpdump -i any host 127.0.0.1 and port 123 -w tcp_capture.pcap 使用telnet模拟tcp连接 telnet 127.0.0.1 123 如果地址无法连接&#xff0c;则会一直重试SYN包&#xff0c;各个平台SYN重试间隔并不一致&#xff0c;如下&#xff1a; 异常站点抓包展示&#xff…...

在ArcGIS中,矢量数据有.shp,.mdb和.gdb,为啥建议使用gdb?

在ArcGIS中,矢量数据可以存储在多种格式中,如 .shp (Shapefile)、.mdb (Microsoft Access Database) 和 .gdb (Geodatabase)。每种格式都有其特定的用途和优缺点,但通常推荐使用 Geodatabase(.gdb)格式,原因如下: 1. 更高的数据容量和性能 容量: Shapefiles 和 MDB 文…...

C++STL---stack queue模拟实现

前言 对于这两个容器适配器的模拟实现非常简单&#xff0c;因为stack和queue只是对其他容器的接口进行了包装&#xff0c;在STL中&#xff0c;若我们不指明用哪种容器作为底层实现&#xff0c;栈和队列都默认是又deque作为底层实现的。 也就是说&#xff0c;stack和queue不管是…...

Spring Cloud系列——使用Sentinel进行微服务保护

文章目录 一、引言1. 雪崩问题的产生原因2. 解决雪崩问题的思路 二、微服务保护1. 服务保护方案1.1 请求限流1.2 线程隔离1.3 服务熔断 2. Sentinel2.1 安装2.2 微服务整合2.2.1 请求限流2.2.2 线程隔离①OpenFeign整合Sentinel②配置线程隔离 2.2.3 服务熔断①编写降级逻辑②配…...

Android开机动画,framework修改Bootanimation绘制文字。

文章目录 Android开机动画&#xff0c;framework修改Bootanimation动画绘制文字。opengl绘制源码分析 Android开机动画&#xff0c;framework修改Bootanimation动画绘制文字。 frameworks/base/cmds/bootanimation/bootanimation.cpp 绘制时间的一个方法 // We render 12 or …...

2024河南高考作文ChatGPT

阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写一篇文章。 要…...

整理好了!2024年最常见 20 道分布式、微服务面试题(一)

一、什么是分布式系统&#xff1f; 分布式系统是由多个独立的计算机&#xff08;通常称为节点&#xff09;组成的系统&#xff0c;这些计算机通过网络连接在一起&#xff0c;协同工作以完成一个共同的任务或服务。以下是分布式系统的关键特点和概念&#xff1a; 网络依赖性&am…...

要想数据形成好的数据集,必须数据治理(目的之一是防止大模型产生灰色数据等),用于炼丹(训练数据私有化模型)的数据才是好数据

数据治理&#xff1a;必要性、实施方法及挑战 引言 在当今数字化时代&#xff0c;数据已经成为企业最重要的资产之一。随着数据量的爆炸性增长&#xff0c;如何有效地管理和利用数据成为企业面临的重大挑战。数据治理&#xff08;Data Governance&#xff09;作为一种系统化的…...

外部mysql导入

利用这个命令&#xff1a; mysql -u username -p database_name < file.sql 然后就这样。成功导入。...

为什么你的Windows任务栏需要一次彻底的美学革命?

为什么你的Windows任务栏需要一次彻底的美学革命&#xff1f; 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否曾经盯着Windows桌面…...

2026最权威的AI辅助写作方案推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术环境里头&#xff0c;知网的AI内容识别机制已然全面实现落地&#xff0c;针对由…...

Bebas Neue:开源几何无衬线字体的现代设计实践指南

Bebas Neue&#xff1a;开源几何无衬线字体的现代设计实践指南 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue Bebas Neue 是一款基于几何设计的开源无衬线字体&#xff0c;专为标题、标语和视觉层次设计而优化。…...

Godot开发者的宝藏:awesome-godot资源库使用指南与实战技巧

1. 项目概述&#xff1a;一个游戏开发者的“藏宝图”如果你正在用Godot引擎做游戏&#xff0c;或者对这个开源、轻量又强大的工具感兴趣&#xff0c;那你大概率听说过或者正在寻找一个叫“awesome-godot”的仓库。这可不是一个普通的代码项目&#xff0c;它更像是一份由全球God…...

Harness层数据清洗自动化

Harness层数据清洗自动化:解放数据团队生产力的核心方案 开篇引子 上周我帮一家年GMV超20亿的电商客户排查数据故障,他们的数仓团队反馈连续3天的用户订单报表交易额比实际支付金额少了1200万,排查了3个小时才定位到根因:新接入的外卖业务系统的订单状态字段新增了枚举值6…...

新手避坑指南:用Simulink搭建48V开关电源仿真,从整流到反激电路完整流程

新手避坑指南&#xff1a;用Simulink搭建48V开关电源仿真全流程实战 电力电子领域的仿真实验常常让初学者望而生畏——参数设置不当可能导致虚拟元器件"烧毁"&#xff0c;波形失真却找不到原因。本文将手把手带你用Simulink搭建从交流整流到DC-DC变换的完整48V电源系…...

PyTorch Tensor运算的‘潜规则’:运算符重载(如a*b)与函数调用(torch.mul)到底选哪个?

PyTorch运算符重载与显式函数调用的工程实践指南 在PyTorch的日常开发中&#xff0c;我们经常面临一个看似简单却值得深思的选择&#xff1a;该用a b这样的运算符重载&#xff0c;还是显式调用torch.add(a, b)&#xff1f;这个选择不仅关乎代码风格&#xff0c;更影响着团队协…...

qmcdump音频解密终极指南:3分钟解锁QQ音乐加密文件

qmcdump音频解密终极指南&#xff1a;3分钟解锁QQ音乐加密文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 还在为QQ…...

如何用拯救者工具箱完全掌控联想笔记本:开源硬件管理终极指南

如何用拯救者工具箱完全掌控联想笔记本&#xff1a;开源硬件管理终极指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 你…...

告别数据焦虑:WeChatExporter如何重塑你的数字记忆管理体验

告别数据焦虑&#xff1a;WeChatExporter如何重塑你的数字记忆管理体验 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 当你深夜翻看三年前的聊天记录&#xff0c;却发现…...