链表题目练习----重排链表
这道题会联系到前面写的一篇文章----快慢指针相关经典问题。
重排链表
指针法

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

代码实现:
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;
}

相关文章:
链表题目练习----重排链表
这道题会联系到前面写的一篇文章----快慢指针相关经典问题。 重排链表 指针法 这道题乍一看,好像有点难处理,但如果仔细观察就会发现,这道题是查找中间节点反转链表链表的合并问题,具体细节有些不同,这个在反装中间链…...
【杂记-浅谈XSS跨站脚本攻击】
一、什么是XSS? XSS,Cross-site Scripting,跨站脚本攻击,是一种典型的Web程序漏洞利用攻击,攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的…...
VMware虚拟机与MobaXterm建立远程连接失败
VMware虚拟机与MobaXterm建立远程连接失败 首先可以检查一下是不是虚拟机的ssh服务并不存在 解决方法: 1.更新镜像源 yum -y update 这个过程会有点久,请耐心等待 2.安装ssh yum install openssh-server 3.启动ssh systemctl restart sshd 4.查…...
mysql undolog管理
在MySQL中,Undo Log(撤销日志)用于支持事务的回滚和MVCC(多版本并发控制)。为了避免Undo Log不断增长,影响系统性能,需要进行合理的清理。MySQL的Undo Log清理策略主要依赖于系统的配置参数和后…...
【Linux】进程2——管理概念,进程概念
1.什么是管理? 那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢? 很简单,先把进程描述起来,再把进程组织起来! 我们拿大学为例子 最典型的管理者——校长最典型的被管理…...
【C++】植物大战僵尸杂交版自动存档——防闪退存档消失
植物大战僵尸杂交版现已更新到v2.0.88,闪退问题还是偶有发生,参考网上现有的方案,简单实现了一个。 原理就是监控存档目录的文件变化,一旦有新的存档,则将其备份。如发生闪退,则还原备份即可。 原目录&…...
通过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 中重复值的语句 不会 产生错误,而只是完全忽略该特定 命令。其明显目的是…...
MyBatis中 set标签
1、set标签特点: set标签用于更新语句中set标签解析为set关键字set可以去除跟新语句中无用的逗号通常是和if标签一起使用 2、set标签的使用 编写接口方法编写sql语句 注意 当set标签中有条件成立时就会附加set关键字,字段为null时该列不会被更新。se…...
mysql自带分页
select 查询列表 from 表 limit offset,pagesize; offset代表的是起始的条目索引,默认从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.产品反馈的那些有意思的数据 三、总结 一、背景 简约而不简单,即是曾经的再现,也是未来的延伸,未来已来,就在脚下。 …...
使用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 如果地址无法连接,则会一直重试SYN包,各个平台SYN重试间隔并不一致,如下: 异常站点抓包展示ÿ…...
在ArcGIS中,矢量数据有.shp,.mdb和.gdb,为啥建议使用gdb?
在ArcGIS中,矢量数据可以存储在多种格式中,如 .shp (Shapefile)、.mdb (Microsoft Access Database) 和 .gdb (Geodatabase)。每种格式都有其特定的用途和优缺点,但通常推荐使用 Geodatabase(.gdb)格式,原因如下: 1. 更高的数据容量和性能 容量: Shapefiles 和 MDB 文…...
C++STL---stack queue模拟实现
前言 对于这两个容器适配器的模拟实现非常简单,因为stack和queue只是对其他容器的接口进行了包装,在STL中,若我们不指明用哪种容器作为底层实现,栈和队列都默认是又deque作为底层实现的。 也就是说,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开机动画,framework修改Bootanimation动画绘制文字。opengl绘制源码分析 Android开机动画,framework修改Bootanimation动画绘制文字。 frameworks/base/cmds/bootanimation/bootanimation.cpp 绘制时间的一个方法 // We render 12 or …...
2024河南高考作文ChatGPT
阅读下面的材料,根据要求写作。(60分) 随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少? 以上材料引发了你怎样的联想和思考?请写一篇文章。 要…...
整理好了!2024年最常见 20 道分布式、微服务面试题(一)
一、什么是分布式系统? 分布式系统是由多个独立的计算机(通常称为节点)组成的系统,这些计算机通过网络连接在一起,协同工作以完成一个共同的任务或服务。以下是分布式系统的关键特点和概念: 网络依赖性&am…...
要想数据形成好的数据集,必须数据治理(目的之一是防止大模型产生灰色数据等),用于炼丹(训练数据私有化模型)的数据才是好数据
数据治理:必要性、实施方法及挑战 引言 在当今数字化时代,数据已经成为企业最重要的资产之一。随着数据量的爆炸性增长,如何有效地管理和利用数据成为企业面临的重大挑战。数据治理(Data Governance)作为一种系统化的…...
外部mysql导入
利用这个命令: mysql -u username -p database_name < file.sql 然后就这样。成功导入。...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
