经典OJ题:重排链表

题目:

给定一个链表,在进行重排前:

进行重排链表后:

 

如上图所示,所谓的重拍链表,就是将第一个节点连接第倒数第一个节点,第二个节点连接倒数第二个节点,以此类推,最后在连接起来。


题源:143. 重排链表 - 力扣(LeetCode) 

思路分析:

方法一:

设置一个新的链表,在设置两个指针分别指向新链表和原链表,指向原链表的指针进行遍历,遍历到需要的节点后进行尾插操作,插入新链表中,最后返回新链表。

方法二:

对于方法二,需要三种操作,寻找中间节点、链表反转、链表合并连接。

寻找中间节点,找到链表的中间部分,使用快慢指针。

 

链表的反转,经过多次的实验和画图,我们知道链表可以分为两种,分别是偶数节点个数的链表,另一个是奇数节点个数的链表,因此二者的中间节点也不一样。

而又通过链表的合并操作,我们得知,在这一步操作中,如果不把链表拆分成两条链表,那么之后的合并链表将会变得十分的艰难。

 

合并链表操作:

 

如图所示,l1_tamp 和 l2_tamp作为临时变量,进行存储 l1 和 l2 的下一个节点

而l1指向l2进行拼接后,l1需要到下一个节点的位置被l2连接

图例: 

 

完整代码:

 


操作参考: 

单链表经典OJ题:找出链表的中间节点-CSDN博客 

单链表经典OJ题:合并有序链表-CSDN博客 

单链表经典OJ题:反转链表-CSDN博客 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【matlab】KMeans KMeans++实现手写数字聚类

目录 matlab代码kmeans matlab代码kmeans MNIST DATABASE下载网址: http://yann.lecun.com/exdb/mnist/ 聚类 将物理或抽象对象的集合分成由类似特征组成的多个类的过程称为聚类(clustering)。 对于给定N个n维向量x1,…,xN∈Rn,聚类的目标…

贪心

【深基12.例1】部分背包问题 题目描述 阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N ( N ≤ 100 ) N(N \le 100) N(N≤100) 堆金币,第 i i i 堆金币的总重量和总价值分别是 m i , v i ( 1 ≤ m i , v i ≤ 100 ) m_i,v_i(1\le m_i,v_i \le 100) mi​,vi​(…

统计学_蒙特卡罗方法

1、蒙特卡罗方法的基本思想 蒙特卡罗方法(Monte Carlo method)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称,不是特指一种方法。 蒙特卡罗方法也成统计模拟方法&am…

SpringBoot3数据访问

SpringBoot3数据访问 SpringBoot整合 Spring、SpringMVC、MyBatis进行数据访问开发。 整合SSM场景 整合步骤 1、创建SSM整合项目 ①数据库准备 DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (id bigint NOT NULL AUTO_INCREMENT COMMENT 编号,login_name varchar(200)…

前端---认识HTML

文章目录 什么是HTML?HTML的读取、运行HTML的标签注释标签标题标签段落标签换行标签格式化标签图片标签a标签表格标签列表标签表单标签form标签input标签文本框单选框复选框普通按钮提交按钮文件选择框 select标签textarea标签特殊标签div标签span标签 什么是HTML&a…

2.1 CE修改器:精确数值扫描

本关是CE修改器的第一关,用户需要通过 Cheat Engine 工具完成精确扫描值。在这个练习中,需要将一个特定的数值(健康值)改变为 1000。首先,要确保数值类型设置正确,默认的是2字节或4字节。接着,选…

(三)正点原子I.MX6ULL kernel6.1挂根文件系统

一、概述 移植NXP官方最新的linux kernel(linux-imx-lf-6.1.y) 移植方法基本参照正点原子教程 移植开发板:正点原子阿尔法2.1 二、添加开发板到内核 进入内核目录下,先修改Makefile 打开终端: cp arch/arm/configs/im…

Nginx:如何实现一个域名访问多个项目

1. 背景介绍 最近在多个项目部署中遇到这样一个问题,一个域名如何实现多个项目的访问。因为不想自己单独去申请域名证书和域名配置,便想到了这个方案,结合Nginx的location功能实现了自己的需求,便记录下来。示例中是以项目演示&a…

Unity - 各向异性 - 丝绸材质

文章目录 目的环境主观美术效果的[假]丝绸基于物理的方式ProjectPBR filament web captureReferences 目的 拾遗,备份 环境 Unity : 2020.3.37f1 Pipeline : Builtin Rendering Pipeline 主观美术效果的[假]丝绸 非常简单 : half specualr pow(1 - NdotV, _Edg…

RT-Thread Studio开发 新手入门

文章目录 前言一、RT-Thread Studio 与 STM32CubeMX 下载安装二、新建工程三、点亮LED灯四、按键中断五、串口通信六、OLED显示 前言 软件开发环境:RT-Thread Studio、STM32CubeMX 硬件:STM32F407ZGT6 一、RT-Thread Studio 与 STM32CubeMX 下载安装 …

【C语言数据结构————————二叉树】

文章目录 文章目录 一、什么是树 树的定义 树的种类 树的深度 树的基本术语 二、满二叉树 定义 满二叉树的特点 三、完全二叉树 定义 特点 四、二叉树的性质 五、二叉树的存储结构 顺序存储结构 链式存储结构 六、二叉树的基本操作 七、二叉树的创建 八、二叉树…

电容的作用

文章目录 总结1.降压2.滤波3.延时4.耦合5.旁路电容 总结 1.降压 问题: 直接连接灯泡会烧掉 解决方案 进一步为了防止电容放电,伤人,加入一个大电阻 2.滤波 直流的情况 交流的情况 频率与容抗的关系 3.延时 4.耦合 滤除直流成分&#xf…

Android---动态权限适配问题

在 Android6.0,即 API 23 之前,App 需要的权限都会在安装阶段向用户展示,而在 App 运行期间不需要动态判断权限是否已申请。从 6.0 之后的版本开始,Android 系统做了一次大的改动。对于部分权限,App 需要在代码中动态申…

Visual Studio 2019 写 Unity 脚本时,烦人又离谱的自动补全!

Visual Studio 2019 写 Unity 脚本时,逆天又离谱的自动补全! 血压高升的原因 写脚本的时候,智能提示有哪些函数可以使用,是非常棒的一件事情,有助于游戏开发者编写和检查自己的脚本代码。 但是! 我想输入…

序列化模块-json和pickle

一、json json是所有语言都通用的一种序列化格式 ,只支持 列表、 字典、 字符串、 数字 , 字典的key必须是字符串 1、dumps、loods # 在内存中做数据转换 : # durps 数据类型 转成 字符串 序列化 # loods 字符串 转成 数据类型 反序…

理解快速排序

理解快速排序 首先了解以下快速排序 快速排序(QuickSort)是一种常用的排序算法,属于比较排序算法的一种。它是由英国计算机科学家Tony Hoare于1960年提出的,是一种分而治之(divide and conquer)的算法。 …

C 语言函数

C 语言函数 在本教程中,将向您介绍C语言编程中的函数(用户定义函数和标准库函数)。此外,您还将学习为什么在编程中使用函数。 函数是执行特定任务的代码块。 假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解…

Redis04-分布式锁

目录 Redis实现分布式锁 分布式锁的工作流程 Redis实现分布式锁 Redission的watch dog Redis分布式锁的合理应用 Redis实现分布式锁 在单节点的服务器中,java中的synchronized机制是处于JVM层面的,只能保证线程之间的同步。而实际的服务部署中&…

第90步 深度学习图像分割:U-Net建模

基于WIN10的64位系统演示 一、写在前面 从这一期开始,我们杀个回马枪,继续学习深度学习图像分割系列,以为4090上岗了。 图像分割是计算机视觉的一个重要任务,目的是将数字图像分割成多个部分或区域,这些部分通常对应…

goroutine调度模型 调度策略

文章目录 背景 协程线程与协程的对比线程(Thread)协程(Coroutine) 运作线程模型 goroutine调度模型与演进过程G-M模型G-P-M模型抢占式调度器其他优化 调度策略队列轮转系统调用工作量窃取抢占式调度GOMAXPROCS 对性能的影响 Go在语…