牛客网CM11 链表分割

news2024/11/29 6:37:59

CM11 链表分割

  • 描述
  • 示例
  • 解题思路以及代码
    • 解法1
    • 解法2

描述

现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

示例

在这里插入图片描述
在这里插入图片描述

解题思路以及代码

解法1

申请两个头结点,小的放在minhead,大的放在maxhead,再把两个链表连接起来。
在这里插入图片描述

class Partition {
public:
    ListNode* partition(ListNode* pHead, int x) {
        // write code here
        struct ListNode* minhead=(struct ListNode*)malloc(sizeof(struct ListNode));
        struct ListNode* maxhead=(struct ListNode*)malloc(sizeof(struct ListNode));
        struct ListNode* mintail=minhead;
        struct ListNode* maxtail=maxhead;
        struct ListNode* cur=pHead,*next=NULL;
        while(cur)
        {
            next=cur->next;
            if(cur->val < x)
            {
                mintail->next=cur;
                mintail=mintail->next;
            }
            else
            {
                maxtail->next=cur;
                maxtail=maxtail->next;
            }
            cur=next;
        }
        mintail->next=maxhead->next;
        maxtail->next=NULL;
        struct ListNode* head=minhead->next;
        free(minhead);
        free(maxhead);
        return head;
    }
};

解法2

不申请头结点,小的放在minhead,大的放在maxhead,然后链接起来,这种做法要注意,minhead和maxhea链表为空的情况,要做近一步处理
在这里插入图片描述

class Partition {
public:
    ListNode* partition(ListNode* pHead, int x) {
        // write code here
        struct ListNode* minhead,*mintail;
        struct ListNode* maxhead,*maxtail;
        minhead=mintail=NULL;
        maxhead=maxtail=NULL;
        struct ListNode* cur=pHead,*next=NULL;
        while(cur)
        {
            next=cur->next;
            if(cur->val < x)
            {
                if(mintail == NULL)
                {
                    minhead=mintail=cur;
                }
                else 
                {
                    mintail->next=cur;
                    mintail=mintail->next;
                }

            }
            else
            {
                if(maxtail == NULL)
                {
                    maxhead=maxtail=cur;
                }
                else 
                {
                    maxtail->next=cur;
                    maxtail=maxtail->next;
                }

            }
            cur=next;
        }
        //maxhead或minhead链表为空
        if (maxtail == NULL)
        {
            return minhead;
        }
        else if (mintail == NULL)
        {
            return maxhead;
        }
        else
        {
            mintail->next = maxhead;
            maxtail->next = NULL;
            return minhead;
        }
        
    }
};

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

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

相关文章

JDBC详解(四):操作BLOB类型字段(超详解)

JDBC详解&#xff08;四&#xff09;&#xff1a;操作BLOB类型字段 前言一、MySQL BLOB类型二、向数据表中插入大数据类型三、修改数据表中的Blob类型字段四、从数据表中读取大数据类型 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴…

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析

倾斜摄影超大场景的三维模型轻量化与三维展示效果的关系浅析 倾斜摄影超大场景的三维模型由于数据量庞大&#xff0c;直接进行渲染可能会导致计算资源和时间的浪费。因此&#xff0c;针对倾斜摄影超大场景的三维模型区域进行轻量化处理是一种有效的优化手段。但是&#xff0c;轻…

macOS 13.4Beta 3(22F5049e)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像

镜像特点 完全由黑果魏叔官方制作&#xff0c;针对各种机型进行默认配置&#xff0c;让黑苹果安装不再困难。系统镜像设置为双引导分区&#xff0c;全面去除clover引导分区&#xff08;如有需要&#xff0c;可以自行直接替换opencore分区文件为clover引导文件&#xff09;备注…

Python3语法笔记(后篇)

文章目录 前言函数输入参数返回值装饰器&#xff08;decorator&#xff09;Lambda表达式&#xff08;匿名函数&#xff09;文档和注解 类类和实例特殊方法继承枚举类 错误和异常后记 前言 这篇文章主要用于记录Python3相关语法&#xff0c;方便自己查阅使用。 Python3语法笔记…

rsync之include、exclude使用

rsync之include、exclude使用 注意&#xff1a;exclude可单独使用&#xff0c;include必须和exclude配合使用 环境&#xff1a; 服务端&#xff1a; 在做同步之前必须要知道的含义&#xff1a; --exclude* 排除所有文件&#xff0c;包括目录&#xff0c;因为在linux一切皆…

自动拣货仓库亮灯方案

方案目标概叙&#xff1a; 系统在美团平台下单后&#xff0c;骑手会收到取货码&#xff0c;凭借取货码到指定的智能仓库去取货&#xff0c;仓库标签系统调取相应订单信息&#xff0c;执行亮灯指令&#xff08;屏幕显示订单信息及拣货数量&#xff0c;并亮灯&#xff09;&#…

window server dos命令集合

1、 删除任务管理器服务里的服务项&#xff0c;用管理员运行cmd, 再运行&#xff1a;sc delete ServiceName ServiceName从服务属性里查。

爬虫为什么需要ip

爬虫需要使用爬虫ip主要是为了解决以下问题&#xff1a; 1、反爬虫机制&#xff1a;许多网站会设置反爬虫机制来防止爬虫程序的访问&#xff0c;例如限制IP地址的访问频率、检测访问来源等。使用爬虫ip可以绕过这些限制&#xff0c;使得爬虫程序更难被检测到。 2、访问限制&a…

Figma快速转换为Sketch文件格式的方法

由于Sketch允许第三方插件&#xff0c;例如应用程序集成和数据提供&#xff0c;许多设计和开发人员喜欢将Figma文件导入Sketch&#xff0c;并将其转换为Sketch格式。 但是令人头痛的是&#xff0c;Figma只支持Sketch文件的导入&#xff0c;而不支持Sketch文件的导出。这篇文章…

vue项目引入字体样式

1、先下载好需要的字体样式&#xff0c;下载好的应该是个.ttf文件 2、在asset中创建fonts文件夹&#xff0c;将字体样式文件放进去&#xff0c;然后再到里面创建font.css文件 3、font.css文件里面进行引用 font-face {/* 重命名字体名 */font-family: HeFengShuDaoZhaoHe;/*…

无惧黑暗强光,纯视觉导航也能全天候作业

对于一台激光导航扫地机器人而言&#xff0c;全天候作业并非难事&#xff0c;那么纯视觉导航扫地机器人能做到吗&#xff1f; 无论对于人&#xff0c;还是机器人&#xff0c;光线环境的变化对“眼睛”的影响都是致命的。由于视觉传感器对于光线十分敏感&#xff0c;在家庭场景…

TDA4VM/VH 芯片 NAVSS0

请从官网下载 TD4VM 技术参考手册&#xff0c;地址如下&#xff1a; TDA4VM 技术参考手册地址 概述 (NAVSS0 的介绍在 TRM 的第10.2章节) NAVSS0 可以看作 MAIN 域的一个复杂外设域&#xff0c;实现如下功能&#xff1a; UDMASS: DMA 管理子系统&#xff1b;MODSS&#xf…

【GPT】你需要了解的 ChatGPT的技术原理- Transformer架构及NLP技术演进

目录 概述 The Concept of Transformers and Training A Transformers ModelTransformers 的概念和训练 Transformers 模型

2023年第二十届五一数学建模竞赛赛题浅析

我们带来五一赛题的一个c题解析这个的目的&#xff0c;就是为了帮助大家更好的选题&#xff0c;简单的看一下这个几个题目就可以。然后我们题目给出的这个文件夹就是包括三个赛题&#xff0c;还有我们各个赛题的论文规范模板&#xff0c;这三个我们论文写作的时候才会用到。主要…

【某区护网】从外网打点到拿下集团域控

目录 web打点 反弹shell与权限维持 主机信息收集与反向代理 攻击域控 最后 前端时间刚结束了攻防演练活动&#xff0c;其中一项成果为拿下某集团域控制器权限&#xff0c;直接控制域内主机5000多台。以下为攻击过程的粗略记录&#xff0c;整体来说还是比较容易。 web打点…

常见HTTP攻击赏析(3)

基于OpenAPI的APIcat开源日志监控软件已经开发一段时间了&#xff0c;在自己的网站上抓到了一些HTTP的攻击&#xff0c;没事&#xff0c;我们就汇总给大家做个赏析&#xff0c;也当是个提醒。 这是一篇系列文章&#xff0c;数据反馈&#xff0c;看的人还是不少的&#xff0c;感…

Java知识学习13(AQS详解)

1、AQS介绍&#xff1f; AQS 的全称为 AbstractQueuedSynchronizer &#xff0c;翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类&#xff0c;主要用来构建锁和同步器。 public abstract class AbstractQueuedSynchron…

Java学习17(IO模型详解)

1、何为IO? I/O&#xff08;Input/Outpu&#xff09; 即输入&#xff0f;输出 。 从计算机结构的角度来解读一下 I/O。 根据冯.诺依曼结构&#xff0c;计算机结构分为 5 大部分&#xff1a;运算器、控制器、存储器、输入设备、输出设备。 输入设备&#xff08;比如键盘&am…

规模增长背后抖音如何构建直播体验优化

随着抖音直播用户持续增加&#xff0c;生态日渐丰富&#xff0c;在经历亿万规模化增长的过程之中&#xff0c;体验优化是必须要面对的问题&#xff0c;如何建立不同阶段的优化体系&#xff1f;如何抓住过程中的优化重点&#xff1f;另外面对业务增长诉求&#xff0c;面对新技术…

计算机网络学习08(TCP三次握手和四次挥手)

1、建立连接—TCP上次握手 建立一个 TCP 连接需要“三次握手”&#xff0c;缺一不可 &#xff1a; 一次握手: 客户端发送带有 SYN&#xff08;SEQx&#xff09; 标志的数据包 -> 服务端&#xff0c;然后客户端进入 SYN_SEND 状态&#xff0c;等待服务器的确认&#xff1b;二…