当前位置: 首页 > news >正文

牛客网:链表分割

一、题目

函数原型:

ListNode* partition(ListNode* pHead, int x)

二、思路

根据题意,可以设置两个新的链表,将原链表中所有小于x的结点链接到链表1中,大于x的结点链接到链表2中,最后再将两个链表合并即可。

此题有两种写法,一种是带哨兵位的链表,另一种是不带哨兵位的链表。

 实际操作过程中,发现对于两个链表的合并,带哨兵位链表比不带哨兵位链表的代码更加简洁。

(带哨兵位的结点进行尾插时不需要考虑头结点是否为空,且链表合并时可以直接合并,无需考虑某一链表是否为空的情况)

三、代码

代码实现1(带哨兵位)

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:ListNode* partition(ListNode* pHead, int x) {// write code hereListNode *Bnewhead=(ListNode*)malloc(sizeof(ListNode));//小链表的哨兵位ListNode *Btail=Bnewhead;//大链表尾指针ListNode *Snewhead=(ListNode*)malloc(sizeof(ListNode));//大链表的哨兵位ListNode *Stail=Snewhead;//小链表尾指针ListNode *cur=pHead;//遍历指针while(cur){if(cur->val<x)//结点值小于x,尾插到小链表{Stail->next=cur;Stail=cur;}else//结点大于x,尾插到大链表{Btail->next=cur;Btail=cur;}cur=cur->next;}Stail->next=NULL;//小链表尾结点指针域指向空Btail->next=NULL;//大链表尾结点指针域指向空Stail->next=Bnewhead->next;//将大小链表合并return Snewhead->next;//返回新链表的头结点(非哨兵位)}
};

代码实现2(不带哨兵位)

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:ListNode* partition(ListNode* pHead, int x) {// write code hereListNode *cur=pHead;ListNode *Bnewhead=NULL;//大链表头结点ListNode *Btail=NULL;//大链表尾指针ListNode *Snewhead=NULL;//小链表头结点ListNode *Stail=NULL;//小链表尾指针while(cur)//遍历原链表{if(cur->val<x)//结点值小于x,尾插到小链表{if(Stail==NULL)//先判断小链表是否为空,为空则将插入结点作为头结点{Snewhead=Stail=cur;}else//小链表不为空,进行尾插{Stail->next=cur;Stail=cur;}}else{if(Btail==NULL)//先判断大链表是否为空,为空则将插入结点作为头结点{Bnewhead=Btail=cur;}else//大链表不为空,进行尾插{Btail->next=cur;Btail=cur;}}cur=cur->next;}if(Btail)//将大链表尾结点指针域指向空Btail->next=NULL;if(Stail)//将小链表尾结点指针域指向空Stail->next=NULL;//开始合并大小链表if(Stail==NULL)//如果小链表为空,则直接返回大链表{return Bnewhead;}else if(Btail==NULL)//如果大链表为空,则直接返回小链表{return Snewhead;}else if(Stail==NULL&&Btail==NULL)//如果大小链表都为空,则直接返回空{return NULL;}else//大小链表都不为空,将两个链表合并{Stail->next=Bnewhead;return Snewhead;} }
};

相关文章:

牛客网:链表分割

一、题目 函数原型&#xff1a; ListNode* partition(ListNode* pHead, int x) 二、思路 根据题意&#xff0c;可以设置两个新的链表&#xff0c;将原链表中所有小于x的结点链接到链表1中&#xff0c;大于x的结点链接到链表2中&#xff0c;最后再将两个链表合并即可。 此题有两…...

pytorch(小土堆)深度学习

第五节课讲项目的创建和对比 第六节&#xff1a;Dataset,Dataloader Dataset提供一种方式区获取数据及其label(如何获取每一个数据及其label&#xff0c;告诉我们总共有多少的数据) Dataloader为后面的网络提供不同的数据形式 第七节&#xff1a;Dataset类代码实战 显示图片 f…...

统计 boy girl 复制出来多少次。 浴谷 P1321题

统计 boy girl 复制出来多少次。 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <iomanip>void fun(char* s) {int boy 0, girl 0;int t 0;while (*s) {if (t 0 && *s!.) {t 1;if (*s b || *s o || *s y)boy 1;elsegirl 1;}…...

odoo16前端框架分析1 boot.js

odoo16前端框架分析1 boot.js odoo16的前端基于owl组件系统&#xff0c;这是一个类似vue&#xff0c;react的现代js框架。 前端框架都放在了web模块中&#xff0c;具体的位置是addons/web/static/src 不过今天要说的不是owl&#xff0c;而是跟前端启动有关的几个重要文件 1、…...

酷开科技持续推动智能投影行业创新发展

近年来&#xff0c;投影仪逐渐成为年轻人追捧的家居时尚单品。据国际数据公司&#xff08;IDC&#xff09;报告显示&#xff0c;2022年中国投影机市场总出货量505万台&#xff0c;超80%为家用投影仪。相比于电视&#xff0c;投影仪外观小巧、屏幕大小可调节&#xff0c;无论是卧…...

TIA博途中已经被调用的变量,为什么交叉引用时却没有显示调用信息?

TIA博途中已经被调用的变量&#xff0c;为什么交叉引用时却没有显示调用信息&#xff1f; 故障现象&#xff1a; 如下图所示&#xff0c;在HMI的画面中&#xff0c;已经连接了对应的变量&#xff0c; 如下图所示&#xff0c;这里为HMI变量表&#xff0c; 如下图所示&#xff…...

OSPF下的MGRE实验

一、实验要求 1、R1-R3-R4构建全连的MGRE环境 2、R1-R5-R6建立hub-spoke的MGRE环境&#xff0c;其中R1为中心 3、R1-R3...R6均存在环回网段模拟用户私网&#xff0c;使用OSPF使全网可达 4、其中R2为ISP路由器&#xff0c;仅配置IP地址 二、实验拓扑图 三、实验配置 1、给各路…...

论文速览 | TRS 2023: 使用合成微多普勒频谱进行城市鸟类和无人机分类

注1:本文系“最新论文速览”系列之一,致力于简洁清晰地介绍、解读最新的顶会/顶刊论文 论文速览 | TRS 2023: Urban Bird-Drone Classification with Synthetic Micro-Doppler Spectrograms 原始论文:D. White, M. Jahangir, C. J. Baker and M. Antoniou, “Urban Bird-Drone…...

《网络协议》02. 物理层 · 数据链路层 · 网络层

title: 《网络协议》02. 物理层 数据链路层 网络层 date: 2022-08-31 22:26:48 updated: 2023-11-08 06:58:52 categories: 学习记录&#xff1a;网络协议 excerpt: 物理层&#xff08;数据通信模型&#xff0c;信道&#xff09;、数据链路层&#xff08;封装成帧&#xff0c…...

【chatgpt问答记录】双端队列、栈和函数调用栈

collections.deque和queue.Queue的区别 Q&#xff1a;collections.deque()跟queue.Queue()有什么区别&#xff1f; collections.deque() 和 queue.Queue 是两种不同的数据结构&#xff0c;它们有一些区别&#xff1a; 实现方式&#xff1a; collections.deque() 是 Python 标…...

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

前不久&#xff0c;灰度在与 SEC 就关于 ETF 受理的诉讼案件中&#xff0c;以灰度胜诉告终。灰度的胜利&#xff0c;也被加密行业看做是加密 ETF 在北美地区阶段性的胜利&#xff0c; 该事件也带动了加密市场的新一轮复苏。 此前&#xff0c;Nason Smart Money 曾对加密市场在 …...

如何查看笔记本电脑电池损耗

1.下载图吧工具箱 在官网下&#xff0c;不要下错了&#xff0c;不然会有很多垃圾捆绑软件&#xff0c;我放一个百度云链接&#xff0c;安装包上传上去了 链接&#xff1a;https://pan.baidu.com/s/18dguF5OGktbPkW7EszZZqA 提取码&#xff1a;1024 2.安装打开后点击主办工具-…...

一键批量视频剪辑、合并,省时省力,制作专业视频

在当今数字化的时代&#xff0c;视频制作的需求日益增长。无论是个人用户还是专业人士&#xff0c;都需要能够快速、高效地处理视频&#xff0c;以适应不同的需求。但是&#xff0c;视频剪辑和合并往往是一个耗时且需要专业技能的过程。有没有一种方法可以简化这个过程&#xf…...

使用R语言构建HTTP爬虫:IP管理与策略

目录 摘要 一、HTTP爬虫与IP管理概述 二、使用R语言进行IP管理 三、爬虫的伦理与合规性 四、注意事项 结论 摘要 本文深入探讨了使用R语言构建HTTP爬虫时如何有效管理IP地址。由于网络爬虫高频、大量的请求可能导致IP被封禁&#xff0c;因此合理的IP管理策略显得尤为重要…...

Stable Diffusion源码调试(二)

Stable Diffusion源码调试&#xff08;二&#xff09; 个人模型主页&#xff1a;https://liblib.ai/userpage/369b11c9952245e28ea8d107ed9c2746/model Stable Diffusion版本&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.4.1 分析S…...

网络安全(黑客)-零基础自学

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

在线CRM系统的安全性高吗?企业该如何选择?

在线CRM系统具备门槛低、功能不打折扣、部署周期短等优点&#xff0c;相比本地化部署更加适合中小企业。但很多企业在选型软件时会顾虑在线CRM系统的安全性高吗&#xff1f; 通常情况下厂商会比中小企业更有实力保证数据安全&#xff0c;从技术手段保护企业隐私不被盗用。 数…...

R-install_miniconda()卸载 | conda命令行报错及解决方法

运行以下代码&#xff0c;突然报错&#xff1a; C:\Users\hp>conda info-e >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<&…...

leaflet:利用Leaflet-Geoman绘制多种图形,导出为geojson文件(135)

第135个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中利用Leaflet-Geoman绘制多种图形,导出为geojson文件。 灵活地配置Leaflet-Geoman的属性,可以产生各种美妙的绘图效果。利用FileSaver可以导出geojson文件。 直接复制下面的 vue+leaflet源代码,操作2分钟…...

【C语言基础】第02章_变量与进制

讲师&#xff1a;康师傅 视频&#xff1a;https://www.bilibili.com/video/BV1Bh4y1q7Nt?p1&vd_source3eaa9d17f2454e1ae80abc50d16e66b5 文章目录 本章专题脉络1关键字(keyword)2标识符(Identifier)3变量(variable)3.1 为什么需要变量3.2 初识变量3.3 变量的声明与赋值步…...

【2026最新版|必收藏】程序员/小白入门大模型不踩坑,实战转型指南

大模型赛道持续高热&#xff0c;2026年行业需求更偏向“实战落地”&#xff0c;冗余理论型人才逐渐被市场淘汰。作为常年扎根大模型培训、带过120学员成功转型就业的训练营主理人&#xff0c;我的后台每天都被CSDN上的新手和转型程序员的焦虑提问刷屏&#xff0c;每一个都戳中痛…...

【微电网调度】考虑需求响应的改进的多目标灰狼算法微电网优化调度研究【含Matlab源码 15393期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

RH850 F1开发避坑指南:选项字节配置不当,我的程序怎么都烧不进去?

RH850 F1开发实战&#xff1a;选项字节配置陷阱与看门狗调试全解析 第一次将编译好的程序烧录进RH850 F1系列MCU时&#xff0c;我盯着纹丝不动的调试器界面&#xff0c;后背渗出一层冷汗——JTAG接口毫无反应&#xff0c;仿佛芯片成了一块砖头。这种场景对许多从STM32转向瑞萨平…...

FlexASIO:Windows音频延迟问题的终极免费解决方案

FlexASIO&#xff1a;Windows音频延迟问题的终极免费解决方案 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址: https://gitcode.com/…...

PowerShell ImportExcel模块终极指南:无需Excel的完整数据处理解决方案

PowerShell ImportExcel模块终极指南&#xff1a;无需Excel的完整数据处理解决方案 【免费下载链接】ImportExcel PowerShell module to import/export Excel spreadsheets, without Excel 项目地址: https://gitcode.com/gh_mirrors/im/ImportExcel 还在为Excel自动化而…...

MemTrust架构:硬件赋能的零信任AI内存安全系统

1. MemTrust架构概述&#xff1a;硬件赋能的零信任AI内存系统 在AI应用爆炸式增长的今天&#xff0c;内存系统正面临前所未有的安全挑战。传统方案依赖软件层面的加密和访问控制&#xff0c;但内存数据在处理器内部仍以明文形式存在&#xff0c;给侧信道攻击留下了可乘之机。Me…...

示波器实测:给按键并联0.1uF电容,硬件消抖效果到底有多明显?

示波器实测&#xff1a;0.1uF电容如何彻底驯服按键抖动&#xff1f; 每次按下机械按键时&#xff0c;你以为得到的是干净利落的电平跳变&#xff0c;实际上示波器会告诉你一个截然不同的故事——那些隐藏在毫秒级时间尺度下的电压毛刺&#xff0c;正是导致嵌入式系统误触发的元…...

终极Windows热键冲突解决指南:快速定位占用进程的完整教程

终极Windows热键冲突解决指南&#xff1a;快速定位占用进程的完整教程 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

别再死记硬背公式了!手把手带你画图推导‘放苹果’问题的状态转移方程

可视化拆解动态规划&#xff1a;从画图到推导‘放苹果’问题的本质 在算法学习的道路上&#xff0c;动态规划&#xff08;DP&#xff09;常常是让初学者望而生畏的难关。那些看似神奇的递推公式&#xff0c;往往被当作黑盒魔法般死记硬背。今天&#xff0c;我们要彻底改变这种学…...

实测对比:Faster-LIO vs FastLIO2,iVox到底让我的Livox Mid360快了多少?

Faster-LIO与FastLIO2性能实测&#xff1a;iVox如何提升Livox Mid360的SLAM效率 当Livox Mid360固态激光雷达以每秒240,000点的速度扫描环境时&#xff0c;传统基于ikd-tree的SLAM算法常面临计算瓶颈。去年我们团队在无人机巡检项目中就遭遇过这样的困境——FastLIO2在复杂植被…...