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

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.xdnf.cn/news/1410734.html

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

相关文章

Qt5 框架学习及应用 — 对象树

Qt 对象树 对象树概念Qt为什么使用对象树 ?将对象挂到对象树上 对象树概念 对象树:对于树的概念,相信许多学过数据结构的同学应该都不会陌生。在学习数据结构的时候我们所接触的什么二叉树、多叉树、哈夫曼树、AVL树、再到红黑树、B/B树………

java之web笔记

1.Servlet技术 1.1 JavaWeb概述 在Sun的Java Servlet规范中,对Java Web应用作了这样定义:“JavaWeb应用由一组Servlet、HTML页、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。 Java Web应用中可以包含如下内容…

STM32——GPIO篇

技术笔记! 1. 什么是GPIO? GPIO是通用输入输出端口(General-purpose input/output)的英文简写,是所有的微控制器必不可少的外设之一,可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功…

数据库和缓存一致性问题

hello,各位小伙伴们大家好,我是颜书凌,下面给大家讲解一下数据库和缓存的一致性问题,话不多说 1、一致性介绍 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性…

基于vmware虚拟机中yum源的配置

1.首先需确保虚拟机中已经连接了光盘映像(如图在虚拟机右下方从左往右第二个) 2.在虚拟机中找到光盘映像文件(默认在/dev的sr0) 3.将光盘文件挂载(挂载后才可读取) 为方便每一次开机之后自动挂载&#xff…

类和对象【四】运算符重载

文章目录 运算符重载的概念运算符重载(函数)返回值类型:任意类型函数名:operator已有操作符 运算符重载(函数)的特点和注意点3个比较特殊的运算符重载赋值运算符()重载返回值类型和返…

未来科技的前沿:深入探讨人工智能的进展、机器学习技术和未来趋势

文章目录 一、人工智能的定义和概述1. 人工智能的基本概念2. 人工智能的发展历史 二、技术深入:机器学习、深度学习和神经网络1. 机器学习2. 深度学习3. 神经网络 三、人工智能的主要目标和功能1. 自动化和效率提升2. 决策支持和风险管理3. 个性化服务和预测未来 本…

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…

【tcl脚本实践Demo 1】文本生成、匹配、修改、读写

引言 在芯片设计的流程中,各种EDA工具在设计、综合、布局布线、验证、时序分析等等环节都会产出大量的文件信息。这些信息是海量的,如果单纯靠程序员自己查看信息效率很低并且很容易纰漏。所以脚本语言可以很好的解决这个问题,可以利用脚本语言匹配到敏感的信息,完成对信息…

WindowSurfaceController method call stacktrace

WindowSurfaceController: prepareToShowInTransaction showRobustly

python判断大图中包含小图并输出位置总结

python判断大图中包含小图并输出位置总结 没啥可说的,项目遇到了就直接上代码,可以减轻劳动力,花最少得时间实现应用功能。 import cv2 # 读取大图片和小图片的路径 img_big cv2.imread(big_image.png) img_small cv2.imread(small_image…

华为手机 鸿蒙系统-android studio识别调试设备,开启adb调试权限

1.进入设置-关于手机-版本号,连续点击7次 认证:有锁屏密码需要输入密码, 开启开发者配置功能ok 进入开发者配置界面 打开调试功能 重新在androd studio查看可运行running devices显示了, 不行的话,重启一下android …

AI诗歌创作

诗歌作为一种文学形式,能够通过优美的语言和深刻的意境表达情感和思想,触动人心,引发共鸣。然而,如今随着生活节奏的加快和人们对实用性的追求,写诗这一传统艺术渐渐被人们所忽略。幸运的是,随着人工智能技…

一本通-1225:金银岛

【题目描述】 某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同…

Spring Cloud Feign

序言 本文给大家介绍一下 Spring Cloud Feign 的基础概念以及使用方式。 一、远程调用 在传统的单体系统中,我们通常是客户端去请求服务端的接口。但是在分布式的系统中,常常需要一个服务去调用另外一个服务的接口。在服务端如何去调用另外一个服务端…

搭建MongoDB副本集

文章目录 一、什么是MongoDB的副本集二、副本集的架构三、副本集的成员四、部署副本集1、节点划分2、安装MongoDB2.1、下载解压安装包 3、创建主节点3.1、创建存储数据和日志的目录3.2、新建配置文件3.3、启动节点服务 4、创建副本节点4.1、创建存储数据和日志的目录4.2、新建配…

普通电机与变频电机区别

普通电机和变频电机之间的区别: 1. 设计和构造: - 普通电机:设计用于在恒定的电源频率和电压下工作,通常具有固定的转速和功率。 - 变频电机:专门设计用于与变频器配合使用,能够在变化的频率和电压下运行&…

大模型公开可用的模型检查点或 API

文章目录 公开可用的模型检查点或 APILLaMA 变体系列大语言模型的公共 API 公开可用的模型检查点或 API 众所周知,大模型预训练是一项对计算资源要求极高的任务。因此,经过预训练的公开模型检查点(Model Checkpoint)对于推动大语言…

精简函数栈帧:优化创建和销毁过程的完全解析(建议收藏,提升内功)

🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 【前文】一、函数栈帧的概念(stack frame&#xff…

win10部署本地大模型langchain+ollama

一、环境 windows10、Python 3.9.18、langchain0.1.9 二、ollama下载 Download Ollama on Windows 0.1.33版本链接https://objects.githubusercontent.com/github-production-release-asset-2e65be/658928958/35e38c8d-b7f6-48ed-8a9c-f053d04b01a9?X-Amz-AlgorithmAWS4-H…