当前位置: 首页 > 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 变量的声明与赋值步…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...