当前位置: 首页 > 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 报头…...

Qwen2-VL-2B-Instruct实战案例:用本地模型实现小红书风格配图智能推荐系统

Qwen2-VL-2B-Instruct实战案例&#xff1a;用本地模型实现小红书风格配图智能推荐系统 你是不是也遇到过这样的烦恼&#xff1f;写好了小红书笔记&#xff0c;却找不到一张风格匹配、意境相符的配图。翻遍图库&#xff0c;要么风格不搭&#xff0c;要么画质太差&#xff0c;要…...

WAN2.2文生视频ComfyUI工作流定制:接入LLM生成Prompt+自动视频合成流水线

WAN2.2文生视频ComfyUI工作流定制&#xff1a;接入LLM生成Prompt自动视频合成流水线 1. 引言&#xff1a;从文字到视频的智能创作新方式 你是否曾经想过&#xff0c;只需要输入一段文字描述&#xff0c;就能自动生成高质量的视频内容&#xff1f;WAN2.2文生视频模型结合Comfy…...

markitdown:微软出的「万物转Markdown」工具,内容提取效率翻倍

markitdown&#xff1a;微软出的「万物转Markdown」工具&#xff0c;内容提取效率翻倍 做内容的人每天要处理各种格式的文件&#xff1a;PDF报告、Word文档、PPT、Excel表格、图片中的文字…… 以前要么手动复制&#xff0c;要么专门找工具转换&#xff0c;效率极低。微软开源了…...

c++ 跨平台线程封装 c++如何封装pthread和std--thread

直接用 std::thread 即可跨平台运行&#xff0c;其行为由 C11 标准保证一致&#xff1b;需明确区分哪些功能必须用原生 API&#xff08;如亲和性&#xff09;、哪些 std::thread 已足够&#xff0c;避免强行封装引入未定义行为或资源泄漏。怎么让同一套线程代码在 Linux/macOS/…...

新手也能懂:用Python+NumPy模拟雷达快慢时间采样数据矩阵(附代码)

用PythonNumPy模拟雷达快慢时间采样数据矩阵实战指南 雷达信号处理听起来像是硬件工程师的专属领域&#xff1f;其实只要掌握基础Python和NumPy操作&#xff0c;软件开发者也能轻松理解雷达数据的核心逻辑。本文将带你用代码构建快慢时间采样矩阵&#xff0c;无需任何硬件设备&…...

保姆级教程:用Python+Matlab从零推导Panda机械臂的DH参数与正运动学

从零推导Panda机械臂&#xff1a;用Python和Matlab实现DH建模与正运动学验证 第一次接触机械臂运动学时&#xff0c;我被那些复杂的矩阵变换和参数定义搞得晕头转向。直到亲手用代码实现了一个完整的正运动学推导流程&#xff0c;才发现原来理解DH参数和坐标系变换可以如此直观…...

一套代码搞定推广全流程:GEO系统的20+核心功能模块详解与源码实现

AI搜索正在改变用户获取信息的方式。想让品牌出现在AI结果中&#xff1f;一套完整的GEO系统比想象中更重要。本文将拆解20核心功能模块&#xff0c;并给出关键源码片段。核心功能模块列表一、成本控制模块&#xff08;3个&#xff09;AI模型对接器 - 直接对接主流模型APIToken用…...

Silanna UV发布TO-39平窗封装UVC LED

Silanna UV 在2026年4月14日宣布&#xff0c;为其高性能 SF1系列&#xff08;235 nm 远-UVC&#xff09;和 SN3系列&#xff08;255 nm 深-UVC&#xff09;LED新增 TO-39平窗封装 选项。核心参数与型号封装形式&#xff1a;TO-39 金属管壳&#xff0c;带平坦石英窗口。适用产品…...

Python Turtle 烟花模拟:从基础绘制到动态交互

1. Python Turtle 入门&#xff1a;从零开始绘制烟花 第一次接触 Python 的 turtle 模块时&#xff0c;我完全被它的简单和直观震撼到了。想象一下&#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基础设施重构的关键锚点。其原生支持的多模态条件建模、细粒度可控推理引擎&…...