分割链表----一道题目的3种不同的解法

news2024/10/6 1:03:52

1.题目概述

以这个题目的事例作为例子,我们看一下这个题目到底是什么意思(Leedcode好多小伙伴说看不懂题目是什么意思),就是比如一个x=3,经过我们的程序执行之后;大于3的在这个链表的后面,小于3的在我们的链表的前面;

2.思路一:在原链表的基础上面进行修改

(1)在原有链表的基础上面,我们判断这个节点的val数值大于或者小于x,大于x的节点往后放(尾插),小于x的节点往前放置(头插);

(2)这个过程实际上并不容易实现,虽然头插尾插并不困难,我们还要让原来的链表结点的next指针指向新的链表节点,这个过程并不容易实现,因此这个方法我们不推荐;

3.思路二:创建一个新的链表

(1)headN是一个哨兵位,用来进行数据的头插,tail用来进行数据的尾部插入;

(2)让原来的链表里面的数据和x进行比较,小于x的进行头部插入,大于x的进行尾部插入;

(3)进行头插的时候,尾指针等于哨兵位就让tail指向尾节点;

(4)这个实际上本质是和第一种方法没有什么差别的,就是我们定义了哨兵位,哨兵位的好处是新的链表一定不是空的链表,我们不需要再第一次插入结点的时候,不用考虑这种特殊情况;

4.思路三:创建两个新的链表

这种做法是官方提供的解题思路,虽然有些浪费空间,但是过程十分明确,不是非常复杂;

下面我们进行分析一下里面的思路方法:

(0)我们给大链表和小链表都设置一个哨兵位和尾部节点,方标我们插入节点;

(1)常见一个小的链表,就是小于x的节点放到这个链表里面去;同理,大于x的节点放到长链表里面去;

(2)我们要进行判断,每次插入数据的时候,大连表和小链表都要移动更新自己的尾部节点的位置,即尾部的节点每次插入一个数据就要是最新插入的数据;

(3)当我们的大连表和小链表都完成之后,我们就要让小链表的尾部节点和大链表的哨兵位的next指向的节点相联结起来;

(4)最后我们应该把大链表的尾部节点指向的区域设置为空指针,如果不设置的话,这个大链表里面的尾部节点指向的还是原来的节点,可能会和小链表里面的某个节点相连接,形成一个环形链表,这样程序会无限制的执行下去,编译器会报错说程序运行超过时间,这个报错的原因就是我们的程序内部出现了死循环;

(5)最后我们返回的时候,要从lesshead这个哨兵位的下一个节点返回,但是哨兵位是我们自己开辟的空间,最后会被释放掉,我们使用ret记住lessnode指向的下一个节点之后释放掉lessnode之后再返回ret就可以了。

总结:官方推荐的第三种方法是有原因的,看似代码比较多,实际上这个方法的思路最清楚,而且没有像前面的两种做法一样涉及很多的细节,很容易初学者理解。

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

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

相关文章

Linux使用操作(二)

进程的管理_ps 程序运行在计算机操作系统中,由操作系统进行管理。为了管理正在运行的程序,每个程序在运行时都被注册到操作系统中,形成进程 每个进程都有一个独特的进程ID(进程号),用来区别不同的进程。进…

C++初阶-----对运算符重载的进一步理解(2)

目录 1.对于加加,减减运算符的重载理解 2.const修饰的一些事情 3.日期对象之间的减法实现逻辑 1.对于加加,减减运算符的重载理解 (1)在C语言里面,我们已经知道并且了解加加,减减的一些基本的用法&#…

STM32H7 HSE时钟的使用方法介绍

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…

超强鉴别 cdn 小工具

最近做一个攻防演习,使用了一些工具收集域名,子域名,但是在将这些域名解析成 IP 这个过程遇到了一些小问题,默认工具给出的 cdn 标志根本不准,所以被迫写了这么一个小工具:get_real_ip.py PS:下…

ThreeJS:项目搭建

介绍如何基于Vite、Vue、React构建ThreeJS项目。 Vite项目 1. 初始化项目,命令:npm init vitelatest, 2. 安装依赖,命令:npm install, 3. 启动项目,命令:npm run dev。 4. 样式初始…

神经网络中的优化方法

一、引入 在传统的梯度下降优化算法中,如果碰到平缓区域,梯度值较小,参数优化变慢 ,遇到鞍点(是指在某些方向上梯度为零而在其他方向上梯度非零的点。),梯度为 0,参数无法优化&…

基于Springboot的滑雪场管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的滑雪场管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&a…

【linuxC语言】守护进程

文章目录 前言一、守护进程的介绍二、开启守护进程总结 前言 在Linux系统中,守护进程是在后台运行的进程,通常以服务的形式提供某种功能,如网络服务、系统监控等。守护进程的特点是在启动时脱离终端并且在后台运行,它们通常不与用…

如何使用免费软件从Mac恢复音频文件?

要从Mac中删除任何文件,背后是有原因的。大多数Mac用户都希望增加Mac中的空间,这就是为什么他们更喜欢从驱动器中删除文件以便出现一些空间的原因。一些Mac用户错误地删除了该文件,无法识别这是一个重要文件。例如,他们错误地从Ma…

I/O体系结构和设备驱动程序

I/O体系结构 为了确保计算机能够正常工作,必须提供数据通路,让信息在连接到个人计算机的CPU、RAM和I/O设备之间流动。这些数据通路总称为总线,担当计算机内部主通信通道的作用。 所有计算机都拥有一条系统总线,它连接大部分内部…

ps科研常用操作,制作模式图 扣取想要的内容元素photoshop

复制想要copy的图片, 打开ps---file-----new ,ctrolv粘贴图片进入ps 选择魔棒工具,点击想要去除的白色区域 然后,cotrol shift i,反选, ctrol shiftj复制,复制成功之后,一定要改…

【Java EE】Mybatis之XML详解

文章目录 🎍配置数据库连接和MyBatis🍀写持久层代码🌸添加mapper接口🌸添加UserInfoXMLMapper.xml🌸单元测试 🌲CRUD🌸增(Insert)🌸删(Delete)🌸改(Update)🌸…

CMake:静态库链接其他动态库或静态库(九)

1、项目结构 对于下面这样一个项目 把calc模块做成静态或者动态库把sort模块做成静态库然后再sort模块中的*.cpp调用calc模块生成的库即可(这样就制作了一个静态库引用动态或者静态库)test模块用于测试sort模块中的内容 . ├── calc │ ├── ad…

ThreeJS:本地部署官网文档与案例

部署方式 部署之前请确保已经配置好node.js环境。 1. 下载ThreeJS源码 ThreeJS的GitHub地址:GitHub - mrdoob/three.js: JavaScript 3D Library.,可以简单查看ThreeJS当前版本:r164, 我们可以选择对应的版本(此处为r1…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳: 1)CBOW模型: 2c个向量是相加,而不是拼接。 2)CBOW模型中的哈夫曼树: 从root开始,向左为1,向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

计算机等级考试2级(Python)知识点整理

计算机等级考试2级(Python)知识点整理 1.基础知识点(记忆、理解) 第1讲Python概述 01. 源代码 02. 目标代码 03. 编译和解释 04. 程序的基本编写方法 第2讲 Python语言基础(一) 01. 用缩进表示代码…

深入理解网络原理1

文章目录 前言一、网络初识1.1 IP地址1.2 端口号1.3 协议1.4 五元组1.5 协议分层 二、TCP/IP五层协议三、封装和分用四、客户端vs服务端4.1 交互模式4.2 常见的客户端服务端模型4.3 TCP和UDP差别 前言 随着时代的发展,越来越需要计算机之间互相通信,共享…

前端基础学习html(1)

1.标题标签.h1,h2...h6 2.段落标签p 换行标签br 3.加粗strong(b) /倾斜em(i) /删除 del(s) /下划线ins(u) 4.盒子:div //一行一个 span//一行多个 5.img :src alt title width height border 图片src引用:相对路径 上级/同级/中级 绝对路径&#xff…

地图产业的困局与破局:高精地图“上车”难 轻量化渐成主流方案 | 最新快讯

《科创板日报》5月3日讯(编辑 邱思雨) 近期,特斯拉与百度的“绯闻”成为智驾、地图行业的焦点。 有媒体消息称,特斯拉将与百度地图独家深度定制车道级高辅地图。《科创板日报》记者也获悉,自5月1日起,百度…

【C语言实现贪吃蛇】(内含源码)

前言:首先在实现贪吃蛇小游戏之前,我们要先了解Win32 API的有关知识 1.Win32 API Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调佣这个中心的各种服务(每一…