Nowcoder .链表分割

news2024/9/28 19:22:50

文章目录

  • 哨兵位节点

哨兵位节点

链表分割

小于X 尾插到一个新链表
大于等于X 尾插到另一个链表
最后将两个链表链接起来

需要注意的细节:将第一个链表的尾与第二个链表的头相连接,再返回连接后的整个链表的头(哨兵位头节点的下一个)

我们可以把哨兵位的头节点当作真实头节点的前驱,它是一个不在答案范围内的节点,但它却可以有效的控制真实的链表。其里面的值可以是随机的,它的next初始指向NULL,如果有节点尾插,它的next就指向尾插的节点,而尾插的节点就是新连接的链表的真实的头。当最后连接完成时,我们想要返回这个链表,不能直接返回哨兵位的头节点 ,应该直接返回哨兵位的next,因为哨兵位的next才是有效的真实的头节点

使用哨兵位的头节点 可以极大可能的避免判断链表为NULL 的情况

在这里插入图片描述

在这里插入图片描述

class Partition {
public:
    ListNode* partition(ListNode* pHead, int x)
     {
    	
        struct ListNode* lesshead = (struct ListNode*)malloc(sizeof(struct ListNode));  //创建哨兵位头节点
        struct ListNode* greaterhead= (struct ListNode*)malloc(sizeof(struct ListNode));//创建哨兵位头节点 
		
	
        lesshead->next = NULL, greaterhead->next = NULL;
        struct ListNode* cur = pHead, * lesstail = lesshead, * greatertail = greaterhead;
		
		// 遍历原链表
        while (cur)
        {
        	// 如果小于x就尾插到lesshead
            if (cur->val < x) 
            {
                lesstail->next = cur;
               lesstail=lesstail->next ;
                  cur = cur->next;
            }
            else   //如果 >= x 就尾插到greaterhead 
            {
               greatertail->next =cur ;
               greatertail=greatertail->next ;
                  cur = cur->next;
            }
         
        }
		
        lesstail->next = greaterhead->next;	// 第一个的尾连接第二个的头
        // 将第二个的尾置为NULL
        greatertail->next = NULL;  //防止成环 
     
        return lesshead->next; // 返回新链表的头

		// 分别释放创建的两个哨兵位头节点
        free(lesshead);
        free(greaterhead);
  
    }
};

需要注意一定要将两个链表链接起来一定要将新链表尾节点置NULL
我们假设 需要分割的链表是 1 5 2 7 3 4 X是 5
小于X 的链表是 1 2 3 4 大于等于X的链表是 5 7
最后将两个链表链接起来
如果此时没有将新链表的尾节点置NULL ,此时 7 的节点还保存了原链表 元素3 的地址就会形成环

如图所示


在这里插入图片描述

如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!

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

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

相关文章

ECharts 环形图组件封装

一、ECharts引入1.安装echarts包npm install echarts --save2.引入echarts这里就演示全局引入了&#xff0c;挂载到vue全局&#xff0c;后面使用时&#xff0c;直接使用 $echartsimport * as echarts from echarts Vue.prototype.$echarts echarts二、写echarts组件这里演示环…

【蓝桥杯嵌入式】PWM的设置,原理图解析与代码实现(第十一届省赛为例)——STM32

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…

Lombok 常用注解

文章目录简介MAVEN 依赖常用的注解1. Data 注解 :2. Setter 注解&#xff1a;3.Getter 注解&#xff1a;4.Log4j or Slf4j 注解5.NoArgsConstructor注解&#xff1a;6.AllArgsConstructor注解&#xff1a;7.RequiredArgsConstructor注解:8.Builder注解&#xff1a;9.Cleanup注解…

全国青少年软件编程(Scratch)等级考试一级真题——2019.12

青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;一级&#xff09;分数&#xff1a;100 题数&#xff1a;37一、单选题(共25题&#xff0c;每题2分&#xff0c;共50分)1.下列关于舞台的描述&#xff0c;不正确的是&#xff1f;&#xff08; &#xff09…

DMHS搭建DMDSC 2节点集群同步到单库

DMHS搭建DMDSC 2节点集群同步到单库环境介绍1 安装DMOCI1.1 关闭数据库实例服务1.2 将DMOCI 复制到源端与目的端的数据库bin目录1.3 对数据库bin 执行目录文件更改用户属组和权限2 启动源数据库服务并配置数据库实例参数2.1 使用DMCSSM启动集群实例2.2 DMDSC源其中一个节点执行…

为何英格兰与苏格兰同属英国,却争端不断?

英国作为世界上的强国其组成部分是由大不列颠岛上的英格兰、威尔士和苏格兰以及爱尔兰岛东北部的北爱尔兰以及一系列附属岛屿。英国作为西欧的一个岛国&#xff0c;地理位置十分优越&#xff0c;位于欧洲大陆西北面的不列颠群岛。英国作为西欧的一颗不容忽视的“明星”&#xf…

【Unity风格化草地】概述风格化草地的实现方法

写在前面 最近本专业开始多很多事情了&#xff0c;要开始建模写论文了&#xff08;不然研究生毕不了业&#xff09;&#xff0c;TA方面的学习进度更慢了&#xff0c;&#xff0c;so sad。 废话不多说&#xff0c;这篇文章其实是个小总结&#xff0c;毕竟学习新东西就是先要当…

序列索引序列切片

六个标准数据类型中是序列的有&#xff1a;字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;。 通过索引和切片的方式可以访问序列中的元素。 一、序列索引 序列中的每一个元素都有一个属于自己的编号&#xff0c…

演唱会的火车票没了?Python实现12306查票以及zidong购票....

嗨害大家好&#xff01;我是小熊猫~ 不知道大家抢到演唱会的门票没有呢? 不管抢到没有&#xff0c;火车票也是很重要的哇 24小时抢票不间断的那种喔~ ~ ~ 不然可就要走路去了喔~ 准备工作 环境 Python 3.8Pycharm 插件 谷歌浏览器驱动 模块 需要安装的第三方模块&am…

1/4车、1/2车、整车悬架LQR仿真合集

目录 前言 1. 1/4悬架系统 1.1数学模型 1.2 LQR求解反馈阵阵(负反馈) 1.3仿真分析 2. 1/2悬架系统 2.1数学模型 2.2 LQR求解反馈阵阵(负反馈) 2.3仿真分析 3. 整车悬架系统 3.1数学模型 整车7自由度主动悬架数学模型 3.2 LQR求解反馈阵阵(负反馈) 3.3仿真分析 4…

MySQL(四)视图、存储过程、触发器

视图、存储过程、触发器视图检查选项视图的更新存储过程存储过程基本语法变量系统变量用户自定义变量局部变量if判断参数casewhile循环repeat循环loop循环cursor游标handler条件处理程序存储函数触发器视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据…

ERP原理与应用教程(作业2)

1. 简答题 ERP是一个高度集成的信息系统&#xff0c;从管理信息集成的角度来看&#xff0c;从MRP到MRPII到ERP&#xff0c;是企业管理信息继承的不断扩展和深化。 所有成为ERP的软件都把MRPII作为其生产和控制模块&#xff0c;以MRPII为基础的计划功能在整个供应链的业务处理…

Composer最小稳定性问题

Composer最小稳定性问题主要指的是&#xff0c;在使用Composer安装某个特定的依赖包时&#xff0c;可能会出现一些不稳定的情况&#xff0c;比如依赖包的版本号发生变化&#xff0c;或者依赖包的某些功能发生变化&#xff0c;这样就会导致应用程序出现问题。为了解决这个问题&a…

【数据结构】栈和队列 (栈 栈的概念结构 栈的实现 队列 队列的概念及结构 队列的实现 栈和队列面试题)

文章目录前言一、栈1.1 栈的概念结构1.2栈的实现二、队列2.1队列的概念及结构2.2队列的实现三、栈和队列面试题总结前言 一、栈 1.1 栈的概念结构 栈也是一种线性表&#xff0c;数据在逻辑上挨着存储。只允许在固定的一端进行插入和删除元素。进行插入和删除操作的一端叫栈顶…

记录 UE5 完全重新构建 UE C++项目

不知道搞了什么&#xff0c;C项目的实时代码编译罢工了&#xff0c;搞了半天都修不好&#xff0c;只能又重建了 UE5 版本为 v5.1.1 删除以下文件夹 /Binaries /Intermediate /SavedBinaries 文件夹是编译后的模块 Intermediate 文件夹里是中间层的C代码&#xff0c;完全由ue…

腾讯乐固加固+app签名+多渠道打包

一、腾讯乐固-基础版免费加固-上传未加固的app-下载加固包&#xff08;加固成功会清除原apk的签名信息和多渠道信息&#xff09;https://console.cloud.tencent.com/ms/reinforce/list/basic二、使用AndroidStudio自带工具apksigner对apk重新签名找到apksigner.bat文件 路径D:\…

CentOS7环境下Docker入门到dockerfile(一)CentOS7安装Docker、容器构建、文件复制与挂载

文章目录准备CentOS7虚拟机准备SecureCRT远程连接虚拟机Centos7环境下安装Docker安装Docker镜像Docker容器的基本操作Docker容器的文件复制与挂载可能遇到的问题准备CentOS7虚拟机 关于网络连接三种模式可以参看这篇博客 准备SecureCRT远程连接虚拟机 可以自行搜索相关安装博…

MQTT协议-发布消息和发布确认

MQTT协议-发布消息和发布确认 PUBLISH一发布消息 PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。 发布消息报文由以下5个部分组成 固定报头由两个字节组成&#xff0c;第一个字节的高4位固定为0011&#xff0c;第2位和第1位表示Qos等级&#xff…

Redis单机版安装

文章目录前言Redis单机版安装下载1.安装依赖C语言依赖2.上传并解压3.编译并安装3.1编译3.2安装4.开启守护进程5.启动并测试5.1启动redis5.2关闭/重启redis5.3启动客户端工具5.4杀死进程的方式关闭redis前言 这里安装linux版本的redis,后续如有需要添加windowx版本 安装linux教…

电脑怎么重装系统?教你轻松掌握这些方法

重新安装计算机系统有两种原因&#xff1a;一种是计算机系统可以正常使用&#xff0c;但是电脑比较卡&#xff0c;为了提高它的运行速度&#xff0c;所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失&#xff0c;系统出现蓝屏&#xff0c;或者黑屏的情况…