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

leetcode每日一题33

86.分隔链表

因为对链表中的一个节点进行更换位置的操作需要知道该节点的上一个节点
所以建立一个虚拟头节点

ListNode* p=new ListNode(-201,head);

根据题意,我们需要找到第一个大于x或等于x的节点large
并且将第一个大于或等于x的节点large后的所有小于x的节点都挪到large前
但是在代码里为了方便挪动节点位置,large为第一个大于x的节点的前一个节点
首先我们要找到第一个大于或等于x的节点

ListNode* p=new ListNode(-201,head);
ListNode* large=p;
ListNode* cur=p;
int flag=0;
while(cur->next)
{if(cur->next->val>=x&&flag==0){large=cur;flag=1;}cur=cur->next;
}

然后再从large后第一个节点开始找,找那些小于x的节点,并挪到large前
这一步要分三个情况

  1. 当前节点cur大于等于x,cur指向下一个节点
  2. 当前节点cur小于x,且当前节点不是链表最后一个节点,正常挪
  3. 当前节点cur小于x,且当前节点是链表最后一个节点,这个时候指针变换时有一个会指向nullptr,要特别写出来
cur=large->next;
while(cur&&cur->next)
{if(cur->next->val<x&&cur->next->next){ListNode* temp1=large->next;ListNode* temp2=cur->next->next;large->next=cur->next;cur->next->next=temp1;cur->next=temp2;large=large->next;}else if(cur->next->val<x&&cur->next->next==nullptr){ListNode* temp1=large->next;large->next=cur->next;cur->next->next=temp1;cur->next=nullptr;large=large->next;}elsecur=cur->next;
}
return p->next;

最后增加一些边界条件

if(head==nullptr||head->next==nullptr)return head;
if(flag==0)//如果找不到大于x的节点
{return p->next;
}

整合起来

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* partition(ListNode* head, int x) {ListNode* p=new ListNode(-201,head);ListNode* large=p;ListNode* cur=p;int flag=0;if(head==nullptr||head->next==nullptr)return head;while(cur->next){if(cur->next->val>=x&&flag==0){large=cur;flag=1;}cur=cur->next;}if(flag==0)//如果找不到大于x的节点{return p->next;}cur=large->next;while(cur&&cur->next){if(cur->next->val<x&&cur->next->next){ListNode* temp1=large->next;ListNode* temp2=cur->next->next;large->next=cur->next;cur->next->next=temp1;cur->next=temp2;large=large->next;}else if(cur->next->val<x&&cur->next->next==nullptr){ListNode* temp1=large->next;large->next=cur->next;cur->next->next=temp1;cur->next=nullptr;large=large->next;}elsecur=cur->next;}return p->next;}
};

不过
其实第二步,从large后开始找小于x的数,完全可以合到第一步的循环里做
这部分需要再优化一下

相关文章:

leetcode每日一题33

86.分隔链表 因为对链表中的一个节点进行更换位置的操作需要知道该节点的上一个节点 所以建立一个虚拟头节点 ListNode* pnew ListNode(-201,head);根据题意&#xff0c;我们需要找到第一个大于x或等于x的节点large 并且将第一个大于或等于x的节点large后的所有小于x的节点都…...

性能测试【一】:Jmeter的常用操作

性能测试【一】&#xff1a;Jmeter的常用操作 一、使用命令行方式运行Jmeter1、为什么2、怎么用3、示例4、结果文件 二、生成动态报告1、准备2、命令3、报告示例4、报告释义 三、使用问题汇总 推荐使用命令行运行&#xff0c;GUI方式会经常卡死&#xff0c;尤其跑稳定性 一、使…...

【JAVA】SpringBoot + mongodb 分页、排序、动态多条件查询及事务处理

【JAVA】SpringBoot mongodb 分页、排序、动态多条件查询及事务处理 1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mongodb ↓ -->&…...

nrm安装及使用

一、介绍 nrm 是一个 Node.js 的 registry 管理工具&#xff0c;它允许你快速地在不同的 npm registry 之间进行切换。通过使用 nrm&#xff0c;你可以方便地将 npm 的 registry 切换为淘宝镜像、npm 官方镜像或者其他定制的镜像&#xff0c;以加快包的下载速度。nrm仓库请点击…...

docker报错standard init linux.go:228 exec user process caused: exec format error

1、报错 使用Dockerfile自己做的服务镜像&#xff0c;docker run时启动失败&#xff0c;报错如下&#xff1a; standard init linux.go:228 exec user process caused: exec format error2、原因一 当前服务器的CPU架构和构建镜像时的CPU架构不兼容。比如做镜像是在arm机器下…...

Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

Docker 是一种容器化技术&#xff0c;它将一个应用程序及其所有依赖项打包在一起&#xff0c;形成一个独立的、可移植的容器。这个容器可以在任何支持 Docker 的操作系统上运行&#xff0c;而且具有很好的可移植性和可扩展性。以下是 Docker 的基本概念和优势&#xff1a; 镜像…...

libmosquitto库的一个bug,任务消息id(mid)分配后不起作用

代码如图所示: 当订阅了所有主题后,每个主题的mid是他们的下标索引加100的数字,可是实际打印出来的值是: mid依然是1,2,这个参数在这里失效了,不知道是bug还是mqtt的什么机制?...

亚马逊云科技re:Invent大会:云计算与生成式AI共筑科技新局面,携手构建未来

随着科技的飞速发展&#xff0c;云计算和生成式 AI 已经成为了推动科技进步的重要力量。这两者相互结合&#xff0c;正在为我们创造一个全新的科技局面。 亚马逊云科技的re:Invent大会再次证明了云计算和生成式AI的强大结合正在塑造科技的新未来。这次大会聚焦了云计算的前沿技…...

Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息

前面的话 默认你已经懂 Docker、docker-compose Nacos版本&#xff1a;v2.2.3 MySQL 版本&#xff1a;8.2.0 一、下载 打开 Nacos 官网 官网地址&#xff1a;官网 点击手册 左侧 Nacos Docker 克隆项目到本地 # 克隆项目&#xff0c;如果提示连接不到 github 请自行解决 …...

【LeeCode】35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 解: class Solution {public int searchInsert(int[] nums, int target) {int …...

18.天气小案例

1►新增带Layout组件的页面 直接在views文件夹下面新增weather.vue。然后随便写一个123&#xff0c;现在先让我们页面能跳过去先。 让页面能跳过去&#xff0c;有好几种方法&#xff1a; 1、在菜单管理自己添加一个菜单&#xff0c;然后把菜单分配给某个角色&#xff0c;再把…...

医保线上购药系统:代码驱动的医疗创新

医保线上购药系统&#xff0c;这是一个融合技术和医疗的创新典范。本文将通过简单的技术代码示例&#xff0c;为您揭示这一系统是如何通过技术驱动医疗创新&#xff0c;为用户提供更智能、便捷的健康管理体验的。 1. 前端界面开发 使用React框架&#xff0c;我们可以轻松构建…...

VMware OpenSLP漏洞解决方案

PS&#xff1a;早期为客户做VMware检测的方法&#xff0c;大家如有遇到可参考 OpenSLP堆溢出漏洞攻击大量ESXI服务器&#xff0c;该漏洞编号为CVE-2021-21974&#xff0c;由 OpenSLP 服务中的堆溢出问题引起 大于以下版本则不受影响 ESXi versions 7.x prior to ESXi7…...

UEditor编辑器实现上传图片自动加水印功能PHP源码

UEditor编辑器是百度旗下的免费开源富文本编辑器,使用很方便,但是也有缺点,比如,上传图片不能自动添加水印,下边我们就来说说如何在UEditor编辑器中自动实现上传图片添加水印功能,操作很简单。 首先找到UEditor/PHP目录下的Uploader.class.php的文件,打开该文件,找到以…...

【从浅识到熟知Linux】基本指定之find、grep、head和tail

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;一篇又一篇&#xff0c;学写越上头。 文章前言&#xff1a;本文介绍find、grep、head和tail指令用法并给出示例和截图。 文章目录 find基本…...

【云备份】文件操作实用工具类设计

文章目录 为什么要单独设计文件工具类&#xff1f;整体实现Filesize ——文件大小stat接口 LastMTime ——最后一次修改时间LastATime —— 最后一次访问时间FileName —— 文件名称GetPostLen ——获取文件指定位置 指定长度的数据GetContnet —— 读取文件数据SetContent ——…...

LeetCode Hot100 199.二叉树的右视图

题目&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 方法&#xff08;灵神&#xff09;&#xff1a;先递归右子树&#xff0c;再递归左子树&#xff0c;在递归的同…...

Nacos身份绕过漏洞复现(QVD-2023-6271)

Nacos身份绕过漏洞复现&#xff08;QVD-2023-6271&#xff09; 环境配置 该漏洞主要用了win10_JAVA的环境&#xff0c;参考网上已有的复现文章&#xff0c;使用jdk-11.0.2_windows-x64_bin.exe 由于2.2.0之后的nacos已将本漏洞修复&#xff0c;所以本次复现使用2.2.0的包 下…...

Elasticsearch集群部署 head监控插件 Kibana部署 Nginx反向代理 Logstash部署

一、组件介绍1、Elasticsearch&#xff1a;2 、Logstash3、Kibana4、Kafka&#xff1a;5、Filebeat: 二、 Elasticsearch集群部署服务器创建用户安装ES修改配置文件创建数据和日志目录设置JVM堆大小 #7.0默认为4G修改安装目录及存储目录权限系统优化&#xff08;1&#xff09;增…...

网络和Linux网络_5(应用层)HTTP协议(方法+报头+状态码)

目录 1. HTTP协议介绍 1.1 URL介绍 1.2 urlencode和urldecode 1.3 HTTP协议格式 1.4 HTTP的方法和报头和状态码 2. 代码验证HTTP协议格式 HttpServer.hpp 2.2 html正式测试 Util.hpp index.html 2.3 再看HTTP方法和报头和状态码 2.3.1 方法_GET和POST等 2.3.2 报头…...

QT项目跨平台发布的三种高效打包策略

1. QT项目跨平台打包的核心挑战 第一次把QT程序打包发给同事测试时&#xff0c;我永远忘不了他发来的消息&#xff1a;"你这程序怎么点不开啊&#xff1f;"原来我漏掉了关键的dll文件。跨平台打包最让人头疼的就是处理这些依赖关系&#xff0c;不同操作系统对可执行文…...

ViGEmBus深度解析:Windows内核级游戏控制器虚拟化架构揭秘

ViGEmBus深度解析&#xff1a;Windows内核级游戏控制器虚拟化架构揭秘 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在游戏输入设备兼容性领域&#xff0c…...

Umi-OCR完整指南:5分钟掌握免费离线文字识别技巧

Umi-OCR完整指南&#xff1a;5分钟掌握免费离线文字识别技巧 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库。…...

Mac上用Xcode学C语言

尽管多数大学教材以Windows系统为主进行讲解&#xff0c;但C语言的核心知识点在不同平台上差异不大。本文详细介绍如何利用Mac自带的开发工具Xcode进行C语言学习&#xff0c;为使用MacBook的学生提供了一种便捷高效的学习路径&#xff0c;具有较强的实用性和参考价值。 1、 前往…...

技术支持的体系建设与服务水平管理

技术支持的体系建设与服务水平管理是现代企业数字化转型的核心竞争力之一。随着信息技术的快速发展&#xff0c;企业对技术支持的依赖程度越来越高&#xff0c;如何构建高效的技术支持体系并提升服务水平&#xff0c;成为企业亟待解决的问题。本文将从几个关键方面探讨技术支持…...

揭秘Stable Diffusion 3.5企业级部署瓶颈:3类GPU资源浪费模式及实时优化方案

第一章&#xff1a;Stable Diffusion 3.5企业级部署的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) Stable Diffusion 3.5 不再仅是开源图像生成模型的迭代版本&#xff0c;而是企业AI基础设施重构的关键锚点。其原生支持的多模态条件建模、细粒度可控推理引擎&…...

配置操作失败数量统计

题目描述: 模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1 其中:add_rule、mod_rule、del_rule 是操作关键字,rule…...

自动驾驶中的多智能体协作

自动驾驶中的多智能体协作&#xff1a;从理论到规模化落地的全栈技术解析 关键词 自动驾驶、多智能体协作、MARL、车路云一体化、V2X、博弈论、感知融合 摘要 本文从第一性原理出发&#xff0c;将“自动驾驶多智能体协作&#xff08;AV-MAC&#xff1a;Autonomous Vehicle Mult…...

告别重复炼丹!用Iris框架5分钟搞定新器官分割,一个例子就教会AI

医学影像分割新范式&#xff1a;5分钟零样本适配罕见解剖结构的实战指南 当你在深夜的实验室收到一份从未见过的胰腺肿瘤CT序列&#xff0c;或是临床合作方突然提出要分割某种尚未标注的罕见血管变异时&#xff0c;传统深度学习流程的笨重感会瞬间袭来——收集样本、标注数据、…...

5分钟快速诊断:如何用memtest_vulkan终极检测GPU显存稳定性问题

5分钟快速诊断&#xff1a;如何用memtest_vulkan终极检测GPU显存稳定性问题 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 当你在游戏中遭遇画面撕裂、3D渲染突…...